繁体   English   中英

如何找到素数

[英]How to find prime numbers

嗨,我用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]输出

对于每个测试用例,如果给定数字为质数,则输出字符串“ 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;
}

我敢打赌,您会在if语句之前收到错误消息:

value = j % i;

这是因为您从i = 0开始:

for(i = 0; i < stop; ++i)

由于模运算符%是除法运算,因此将0用作第二个操作数是不合法的。 您得到除以零的错误。

顺便说一句:以1开头是没有意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM