C 波拉德';带指针误差对数的s-rho算法
我从维基上编写了关于Pollard的rho算法的C代码,Pollard的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; *
#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);