嗨,我是用c语言写的,下面是我的代码。我试着输入一个输入,用模数来检查输入数字的人是否是素数。但是,我在第一个if语句中出现了错误。错误是浮点异常(内核转储),为什么会这样?不允许将值与0进行比较吗?
#include <stdio.h>
int main()
{
int i = 0, j = 0, count = 0, value = 0, stop = 0;
scanf("%d", &j);
stop = j;
for(i = 0; i < stop; ++i)
{
value = j % i;
if(value == 0)
{
++count;
}
}
if(count>1)
{
printf("YES");
}
else
printf("NO");
return 0;
}
下面是我的问题,实际上,我无法使我的编译工作正常,虽然我可以得到输出。输入
T-测试用例的数量,然后t测试用例如下。T <= 500每一行包含一个整数:n2 <= n <= 2^63-1输出。
对于每个测试用例,如果给定的数字是素数,则输出字符串"YES“,否则输出"NO”。
#include <stdio.h>
int main()
{
int i = 0, j = 0, count = 0, value = 0, stop = 0, store[]={0}, s = 0;
scanf("%d", &j);
stop = j;
for(i = 1; i < stop; ++i)
{
value = j % i;
if(value == 0)
{
store[s]=value;
++count;
++s;
}
}
if(count>=2 || j==1 )
{
printf("NO");
}
else
printf("YES");
return 0;
}
发布于 2017-12-05 07:53:19
我敢打赌,您会在if
语句之前得到以下错误:
value = j % i;
这是因为您从i
=0开始:
for(i = 0; i < stop; ++i)
由于模运算符%
是一个除法,所以使用0作为第二个操作数是不合法的。你得到的除以零误差。
顺便说一下:从1开始是没有意义的。
https://stackoverflow.com/questions/47657537
复制相似问题