J'essaie de comprendre l'algorithme de Rabin Miller, mais je suis confus au sujet d'une petite partie. S'il vous plaît, aidez à le comprendre. Nous avons calculé 's' en 2^d * s, puis nous prenons un entier aléatoire 'a' et en calculant a^s% p, s'il est égal à 1, alors p est Prime probable. Sinon, si pour tout 'r' a^(r * s)% p = -1 Alors nous aurons 1 dans la prochaine équation, donc p est premier. Première itération si x = 1; Ensuite, nous le vérifions dans l'instruction if, mais après la première itération, quelle est la signification de if, je ne comprends pas. S'il vous plaît aider ...Rabin Miller Algorithm
Confondre Partie:
if(mod!=p-1 && temp%2==0){
return false;
}
Origingal Miller Mise en œuvre:
bool Miller(long long p,int iteration){
if(p<2){
return false;
}
if(p!=2 && p%2==0){
return false;
}
long long s=p-1;
while(s%2==0){
s/=2;
}
for(int i=0;i<iteration;i++){
long long a=rand()%(p-1)+1,temp=s;
long long mod=modulo(a,temp,p);
while(temp!=p-1 && mod!=1 && mod!=p-1){
mod=mulmod(mod,mod,p);
temp *= 2;
}
if(mod!=p-1 && temp%2==0){
return false;
}
}
return true;
}
Il peut être utile de noter le langage de programmation. – jpmc26
Pour noter le langage de programmation .. qu'est-ce que c'est? – user2379271
La langue dans laquelle votre code est écrit. Peut-être C, C++, C#, Java, etc. – jpmc26