C 波拉德';带指针误差对数的s-rho算法

C 波拉德';带指针误差对数的s-rho算法,c,algorithm,pointers,discrete-mathematics,C,Algorithm,Pointers,Discrete Mathematics,我从维基上编写了关于Pollard的rho算法的C代码,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; *

我从维基上编写了关于Pollard的rho算法的C代码,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;
}
#包括
#包括
intα,β,N;
void xab(int*x,int*a,int*b)
{
开关(*x%3){
案例0:*x=((*x)*(*x))%N;*a=((*a)*2)%N;*b=((*b)*2)%N;中断;
案例1:*x=(alpha*(*x))%N;*a=((*a)+1)%N;中断;
案例2:*x=(β*(*x))%N;*b=((*b)+1)%N;中断;
}
}
内部主(空)
{
整数x=1;整数a=0;整数b=0;
整数X=1;整数A=0;整数B=0;
int i;
扫描频率(“%d%d%d”,α,β,N);
对于(i=1;i
应该是

 scanf("%d %d %d", &alpha, &beta, &N);

“但我有一个我不知道的错误。”
若您能和我们分享这个错误,这会很有帮助。这是一个编译器错误,还是一个运行时错误?运行时错误。很抱歉并没有写关于……的内容。运行时错误的确切文本是什么?存在错误消息以进行故障排除-我不确定您为什么要忽略它们。
 scanf("%d %d %d", &alpha, &beta, &N);