7 def testPrimaliteFermat(n,t):
17 #calcul de a^(n-1) [n]
18 #if a**(n-1) % n != 1 :
19 if pow(a,n-1,n) != 1 :
32 def testPrimaliteMillerRabin(n,t):
37 # ecrire n-1 comme 2**s * d
54 while r < s and not ret:
55 if pow(a, 2**r * d, n) == n-1:
70 #print "probabilite d'etre premier (FERMAT)", testPrimaliteFermat(n,500)
71 #print "probabilite d'etre premier (Miller Rabin)", testPrimaliteMillerRabin(n,30)
74 def genereUnNombrePremier(nbChiffre):
77 mini = 10**(nbChiffre-2)
78 maxi = 10**(nbChiffre-1)-1
79 chiffreFinal=[1,3,7,9]
80 while (not estPremier):
81 r = randint(mini,maxi)*10
82 r += chiffreFinal[randint(0,3)]
85 if testPrimaliteMillerRabin(r,50):
91 (r,n)= genereUnNombrePremier(100)
117 n=9623827 #et 343570291. % res=2953*3259 res = 17729*19379
118 print "probabilite d'etre premier (FERMAT)", testPrimaliteFermat(n,t)
119 print "probabilite d'etre premier (MILLER-RABIN)", testPrimaliteMillerRabin(n,t)