/// <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); }
/// <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); }
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); }
public PrimeNumberGeneratorNaiveTest() { this.primeNumberGenerator = new PrimeNumberGeneratorNaive(); }
/// <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); }
public void Initialize() { this.primeNumberGenerator = new PrimesSieveOfEratosthenes(); }
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; }
public CachedPrimeNumberGenerator(IPrimeNumberGenerator generator) { this.generator = generator; }
/// <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; }
/// <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(); }
public Disguiser(IPrimeNumberGenerator primeNumberGenerator) { PrimeNumberGenerator = primeNumberGenerator; }
public PrimeTableGenerator( IPrimeNumberGenerator primeNumberGenerator) { _primeNumberGenerator = primeNumberGenerator; }
public PrimeNumbersService(IPrimeNumberGenerator primeNumberGenerator, IGridBuilder gridBuilder) { _primeNumberGenerator = primeNumberGenerator; _gridBuilder = gridBuilder; }
/// <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 RabinCryptosystem(IPrimeNumberGenerator generator) { this.generator = generator; }
public void Initialize() { _primeNumGenerator = new PrimeNumberGenerator(); }