Cet article présente principalement la méthode de détection des nombres premiers Python. Il analyse les compétences associées à la détection des nombres premiers Python avec des exemples. Les détails sont les suivants :
Détection du facteur :
Facteur de détection, complexité temporelle O(n^(1/2))def is_prime(n): if n < 2: return False for i in xrange(2, int(n**0.5+1)): if n%i == 0: return False return True
Petit théorème de Fermat :
Si n est un nombre premier et a est un entier positif inférieur à n, alors la nième puissance de a est congrue à un modulo nMéthode de mise en œuvre : Choisissez une base (par exemple 2), pour un grand entier p, si 2^(p-1) et 1 ne sont pas congrus modulo p, alors p ne doit pas être un nombre premier sinon, p est susceptible d'être un ; le nombre premier2**(n-1 )%n n'est pas un nombre facile à calculer
(a^b) % p = ((a % p)^b) % p (a * b) % p = (a % p * b % p) % p
si N est un nombre pair, alors X^N = (X*X)^[N/2]
Si N est un nombre impair, alors X^N = X* ; X^(N-1) = X * (X*X)^[ N/2];
def xn_mod_p(x, n, p): if n == 0: return 1 res = xn_mod_p((x*x)%p, n>>1, p) if n&1 != 0: res = (res*x)%p return res
def xn_mod_p2(x, n, p): res = 1 n_bin = bin(n)[2:] for i in range(0, len(n_bin)): res = res**2 % p if n_bin[i] == '1': res = res * x % p return res
def fermat_test_prime(n): if n == 1: return False if n == 2: return True res = xn_mod_p(2, n-1, n) return res == 1
Test de MILLER-RABIN
Le test de Miller-Rabin est actuellement largement utiliséThéorème de détection quadratique : si p est un nombre premier et 0Le test de Miller est effectué k fois, la probabilité d'erreur du traitement des nombres composés comme des nombres premiers ne dépassera pas 4^(-k)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!