问题陈述是:
当数字为64,253乘以365时,乘积为23,452,345。请注意 前四位数字与后四位数字(2345和2345)相同。写一个会的程序 找到任何和所有可以乘以365的整数来生成一个八位数的产品 前四位数字与后四位数字相同。 在上面的示例中,没有重复数字,但在您的程序中,产品可以具有 重复。例如,44,884,488。 (提示:使用mod)
我写的代码是:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=10000, b,c;
// 64253
while(a<100000){
b = a*365;
c = (a*365)%10000;
if(c == 0 || b %1000 == c)
continue;
if(b/c == 10001 ){
printf("%d \n",a);
}
++a;
}
return 0;
}
我不知道它崩溃的原因。你们朋友可以帮忙吗?
答案 0 :(得分:6)
(10000*365) % 10000
为0。
所以你要划分:b/0
会导致浮点异常。
编辑:请注意,此答案在OP编辑之前,在示例代码中引入c == 0
检查之前。
答案 1 :(得分:3)
当c
为零时,您尝试除以零。
答案 2 :(得分:1)
正如其他人所说,当a
是10000的倍数时,之后除以0。
无论如何,这对你来说可能并不重要,但你可以像下面这样检查:
if(b/10000000<0 || b/10000000>9)continue;
优化代码。 (这样就可以消除所有非8位数字。)