#include "df.h" uint64 expm(uint64 m, uint64 e, uint64 mod) { uint128 _r = 1; uint128 _m = (uint128)m; uint128 _mod = (uint128)mod; while (e > 0) { if (e % 2 == 1) { _r = (_r * _m) % _mod; } _m = (_m * _m) % _mod; e = e / 2; } return (uint64)_r; } uint64 generateur(uint64 p) { uint64 q = (p - 1) / 2; uint64 g = 2; while (1) { if (expm(g, 2, p) != 1 && expm(g, q, p) != 1) { return g; } g++; } }