您好我用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] 每行包含一个整数:N [2 <= N <= 2 ^ 63-1] 输出
对于每个测试用例输出字符串&#34; YES&#34;如果给定的数字是素数且&#34; NO&#34;否则。
#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;
}
答案 0 :(得分:1)
我敢打赌,你会在if
声明之前得到错误:
value = j % i;
这是因为你从i
= 0开始:
for(i = 0; i < stop; ++i)
由于模运算符%
是一个除法,因此使用0作为第二个操作数是不合法的。你得到零除错误。
顺便说一句:从1开始是毫无意义的。