tp3
This commit is contained in:
31
tp3/df.c
Normal file
31
tp3/df.c
Normal file
@@ -0,0 +1,31 @@
|
||||
#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++;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user