size_t find_next_coprime(const prime *const ps, size_t nps, prime p) { p |= 1; while (1) { if (is_coprime(ps, nps, p)) { return p; } p += 2; } }
uint64_t get_encryption_value(uint64_t n, uint64_t eu, uint64_t xseed) { uint64_t e; srand( xseed ); e = find_nearest_prime_number( rand() % n, GET_NEAREST_BIGGER ); while (!is_coprime(e, eu)) { e = find_nearest_prime_number( rand() % n, GET_NEAREST_BIGGER ); if (e == (uint64_t)-1) { DPRINTF("%s: Invalid prime number for e\n", __FUNCTION__); return e; } } DPRINTF("%s: Encryption value found 0x%"PRIx64"\n", __FUNCTION__, e); return e; }
inline bool is_coprime (const vector<T, REFCNT>& x) { return is_coprime(x, factory<T>()); }
inline bool is_coprime (const T& a, const T& b) { return is_coprime(a, b, factory<T>()); }