我正在使用 Dev C++,程序运行没有错误。我遇到的问题是它重复了以前周期的数字,我没有有效的方法来计算这些数字中有多少是完美的、友好的或只是善于交际的。
这是主程序:
int main()
{
int per = 0, cyc = 0, ami = 0, rep = 0;
for(int n = 2; n < MAXNUM; n++){
int f = 0;
for(int c = 1; !f && c <= MAXCYC; c++){
rep = c;
long a = n;
while(rep--) a = divs(a);
rep = c;
if(n == a ){
printf("Cycle of length %d: %d", c, n);
while(rep --){
a = divs(a);
printf(" %ld", a);
cyc++;
}
printf("\n");
f = 1;
}
}
}
printf("\nFound %d cycles including \n", cyc);
printf("%d cycles with perfect numbers and \n", per);
printf("%d cycles with amicable numbers\n", ami);
return 0;
}
我怎样才能使它不会重复以前周期的数字作为新周期的起点,同时让我的 per 和 ami 计数器上升?我也不能使用数组,因为我不允许这样做。