static long calculateIdealNumOfBuckets(HashTable *hashTable) { long idealNumOfBuckets = hashTable->numOfElements / hashTable->idealRatio; if (idealNumOfBuckets < 5) idealNumOfBuckets = 5; else idealNumOfBuckets |= 0x01; /* make it an odd number */ while (!isProbablePrime(idealNumOfBuckets)) idealNumOfBuckets += 2; return idealNumOfBuckets; }
static long calculateIdealNumOfBuckets(wHashTable* table) { long idealNumOfBuckets = table->numOfElements / ((long) table->idealRatio); if (idealNumOfBuckets < 5) idealNumOfBuckets = 5; else idealNumOfBuckets |= 0x01; while (!isProbablePrime(idealNumOfBuckets)) idealNumOfBuckets += 2; return idealNumOfBuckets; }
/* Returns a probable prime number "digitCount" digits long, * with a probability of at least 1 - 4^(-k) that it is prime. */ BigInt PrimeGenerator::Generate(unsigned long int digitCount, unsigned long int k) { BigInt primeCandidate; PrimeGenerator::makePrimeCandidate(primeCandidate, digitCount); while (!isProbablePrime(primeCandidate, k)) { //select the next odd number and try again primeCandidate++; primeCandidate++; if (primeCandidate.digitCount != digitCount) PrimeGenerator::makePrimeCandidate(primeCandidate, digitCount); } return primeCandidate; }
/* Returns a probable prime number "digitCount" digits long, * with a probability of at least 1 - 4^(-k) that it is prime. */ BigInt PrimeGenerator::Generate(unsigned long int digitCount, unsigned long int k) { if (digitCount < 3) throw "Error PRIMEGENERATOR00: Primes less than 3 digits long " "not supported."; BigInt primeCandidate; PrimeGenerator::makePrimeCandidate(primeCandidate, digitCount); while (!isProbablePrime(primeCandidate, k)) { //select the next odd number and try again primeCandidate = primeCandidate + 2; if (primeCandidate.Length() != digitCount) PrimeGenerator::makePrimeCandidate(primeCandidate, digitCount); } return primeCandidate; }