Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="oConfiguration"></param>
        /// <returns></returns>
        public List <CPeriodSet> GetPeriods(CConfiguration oConfiguration, IPrimeNumberGenerator primeGenerator)
        {
            List <List <double> > allCombinations;
            List <CPeriodSet>     allPeriodSets = new List <CPeriodSet>();
            List <double>         mainSet       = generateMainSet(oConfiguration.MinPeriod, oConfiguration.MaxPeriod);

            CCombinationGenerator comb = new CCombinationGenerator();

            _Message = "";

            allCombinations = comb.GenerateCombinations(mainSet, oConfiguration.NumberOfTasksPerSet);



            //Convert allCombinations to allPeriodSets
            CPeriodSet ps;

            foreach (List <double> c in allCombinations)
            {
                ps = new CPeriodSet();

                foreach (double d in c)
                {
                    ps.Add(d);
                }

                allPeriodSets.Add(ps);
            }


            return(allPeriodSets);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="oConfiguration"></param>
        /// <returns></returns>
        public List <CPeriodSet> GetPeriods(CConfiguration oConfiguration,
                                            IPrimeNumberGenerator primeGenerator)
        {
            int               noOfPeriods = oConfiguration.NumberOfTaskSets;
            Hashtable         hshMain     = new Hashtable();
            long              tmp;
            List <CPeriodSet> allPeriodSets = new List <CPeriodSet>();
            CPeriodSet        ps;

            _Message = "";

            while (allPeriodSets.Count < oConfiguration.NumberOfTaskSets)
            {
                ps = new CPeriodSet();

                while (ps.Count < oConfiguration.NumberOfTasksPerSet)
                {
                    tmp = GetRandomPeriod((long)oConfiguration.MinPeriod, (long)oConfiguration.MaxPeriod);
                    while (ps.isPresent(tmp))
                    {
                        tmp = GetRandomPeriod((long)oConfiguration.MinPeriod, (long)oConfiguration.MaxPeriod);
                    }

                    ps.Add(tmp);
                }

                allPeriodSets.Add(ps);
            }

            return(allPeriodSets);
        }
Example #3
0
        private static bool IsTruncatableRight(long prime, IPrimeNumberGenerator primeGenerator)
        {
            var primes = primeGenerator
                         .GetPrimesBelowLongMaxValue()
                         .TakeWhile(p => p <= prime)
                         .ToList();

            var str = prime.ToString();

            while (str.Length > 1)
            {
                str = str.Substring(0, str.Length - 1);
                long num = long.Parse(str);
                if (!primes.Contains(num))
                {
                    return(false);
                }
            }
            return(true);
        }
Example #4
0
 public PrimeNumberGeneratorNaiveTest()
 {
     this.primeNumberGenerator = new PrimeNumberGeneratorNaive();
 }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="oConfiguration"></param>
        /// <returns></returns>
        public List <CPeriodSet> GetPeriods(CConfiguration oConfiguration,
                                            IPrimeNumberGenerator primeGenerator)
        {
            int           maxGroups;
            int           maxIdx;
            int           idx = 0;
            double        maxFactor;
            List <double> tmpList;
            int           ii;
            double        delta;
            double        maxPrime;

            delta    = oConfiguration.MaxPeriod - oConfiguration.MinPeriod + 1;
            maxPrime = Math.Ceiling(delta / 2);

            _allPeriods = new List <CPeriodSet>();
            //Generate Primes
            if (_primes == null)
            {
                GeneratePrimes(oConfiguration);
            }

            maxGroups = GetMaximumGroups(oConfiguration.MinPeriod, oConfiguration.MaxPeriod,
                                         oConfiguration.NumberOfTasksPerSet);
            _Message = "";

            _groups = new List <double> [maxGroups];

            maxFactor = GetMaximumFactor(oConfiguration.MinPeriod, oConfiguration.MaxPeriod,
                                         oConfiguration.NumberOfTasksPerSet);


            maxIdx = GetIndexOfMaxPrime(maxFactor);


            //Fill in Periods in All Groups
            //Starting with Highest Index First
            idx = 0;
            int primeIdx = maxIdx;

            while (primeIdx >= 0)
            {
                tmpList = GeneratePeriods(oConfiguration.MinPeriod,
                                          oConfiguration.MaxPeriod, _primes[primeIdx--]);

                _groups[idx++] = tmpList;
            }

            //Now Return Periods
            CCombinationGenerator oComb = new CCombinationGenerator();
            CPeriodSet            ps;

            //Customize the group number here
            for (ii = 0; ii < _groups.Length; ii++)
            {
                tmpList = _groups[ii];
                List <List <double> > indexes;

                indexes = oComb.GenerateCombinations(tmpList,
                                                     oConfiguration.NumberOfTasksPerSet);

                foreach (List <double> lst in indexes)
                {
                    ps = new CPeriodSet();
                    foreach (double p in lst)
                    {
                        ps.Add(p);
                    }
                    _allPeriods.Add(ps);
                }
            }

            return(_allPeriods);
        }
Example #6
0
 public void Initialize()
 {
     this.primeNumberGenerator = new PrimesSieveOfEratosthenes();
 }
Example #7
0
 public PrimeNumberMultiplicationService(IPrimeNumberGenerator primeNumberGenerator)
 {
     this.primeNumberGenerator = primeNumberGenerator;
 }
 public void Setup()
 {
     _primeNumberGenerator = new PrimeNumberGenerator();
     _primeTableFactory = new PrimeTableFactory(_primeNumberGenerator);
 }
 public PrimeTableFactory(IPrimeNumberGenerator primeNumberGenerator)
 {
     _primeNumberGenerator = primeNumberGenerator;
 }
 public GetNextIfNotPrimeOrCurrentQueryHandler(IPrimeNumberGenerator primeNumberGenerator, IPrimeNumberChecker primeNumberChecker)
 {
     _primeNumberGenerator = primeNumberGenerator;
     _primeNumberChecker   = primeNumberChecker;
 }
Example #11
0
 public CachedPrimeNumberGenerator(IPrimeNumberGenerator generator)
 {
     this.generator = generator;
 }
Example #12
0
 /// <summary>
 /// Constructor for testing purposes, which will allow the initial state of the internal primes
 /// list be set, as well as providing options to set the generator
 /// </summary>
 /// <param name="initialPrimes">List of integers to initialize the primes to</param>
 /// <param name="requestedGenerator">Optional prime number generator - treated the same as in the default constructor</param>
 internal PrimeNumberCache(IList <int> initialPrimes, IPrimeNumberGenerator requestedGenerator = null) : this(requestedGenerator)
 {
     Primes = (List <int>)initialPrimes;
 }
Example #13
0
        /// <summary>
        /// Constructor which will initialize the internal store of prime numbers, and either create a
        /// default <see cref="IPrimeNumberGenerator"/>, or store the one provided
        /// </summary>
        /// <param name="requestedGenerator">An optional prime number generator. If not specified
        /// <see cref="BasicPrimeNumberGenerator"/> is used as a default</param>
        public PrimeNumberCache(IPrimeNumberGenerator requestedGenerator = null)
        {
            Primes = new List <int>();

            _generator = requestedGenerator ?? new BasicPrimeNumberGenerator();
        }
Example #14
0
 public Disguiser(IPrimeNumberGenerator primeNumberGenerator)
 {
     PrimeNumberGenerator = primeNumberGenerator;
 }
Example #15
0
 public PrimeTableGenerator(
     IPrimeNumberGenerator primeNumberGenerator)
 {
     _primeNumberGenerator = primeNumberGenerator;
 }
 public PrimeNumbersService(IPrimeNumberGenerator primeNumberGenerator, IGridBuilder gridBuilder)
 {
     _primeNumberGenerator = primeNumberGenerator;
     _gridBuilder = gridBuilder;
 }
Example #17
0
 /// <summary>
 /// Optional constructor, allowing the genrator of the contained <see cref="PrimeNumberCache"/> to be set
 /// </summary>
 /// <param name="requestedGenerator">The prime number generator to request the cache to use</param>
 public GoldbachPairCalculator(IPrimeNumberGenerator requestedGenerator)
 {
     _cache = new PrimeNumberCache(requestedGenerator);
 }
 public PrimeTableGenerator(
     IPrimeNumberGenerator primeNumberGenerator)
 {
     _primeNumberGenerator = primeNumberGenerator;
 }
Example #19
0
 public RabinCryptosystem(IPrimeNumberGenerator generator)
 {
     this.generator = generator;
 }
 public void Initialize()
 {
     _primeNumGenerator = new PrimeNumberGenerator();
 }