我正在编写关于Pollard的rho算法的C,来自wiki,Pollard的rho算法用于对数。但是我遇到了运行时错误,我不知道。我想它可能来自指针。你会发现错误吗?
#include<stdio.h>
#include<math.h>
int alpha, beta, N;
void xab(int *x, int *a, int *b)
{
switch(*x%3){
case 0: *x=((*x)*(*x))%N; *a=((*a)*2)%N; *b=((*b)*2)%N; break;
case 1: *x=(alpha*(*x))%N; *a=((*a)+1)%N; break;
case 2: *x=(beta*(*x))%N; *b=((*b)+1)%N; break;
}
}
int main(void)
{
int x=1; int a=0; int b=0;
int X=1; int A=0; int B=0;
int i;
scanf("%d %d %d", alpha, beta, N);
for(i=1;i<N;i++){
xab(&x,&a,&b);
xab(&X,&A,&B); xab(&X,&A,&B);
if(x=X) break;
}
return 0;
}
答案 0 :(得分:1)
scanf("%d %d %d", alpha, beta, N);
应该是
scanf("%d %d %d", &alpha, &beta, &N);