我用C语言键入了以下程序:

#include <stdio.h>
int main ()
{
    int i = 1, a = 2;
    while (i <= 300)
    {
        while (a < i)
        {
            if (i % a == 0)
                break;
            else
                printf ("%d\n", i);
            a++;
        }
        i++;
    }
    return 0;
}


程序正在打印许多非素数值,例如295275等。
请帮助,我是一个初学者,缺乏很多经验。

最佳答案

除了您没有将a重置为2之外,还没有正确放置printf()语句。这将打印任何不能被2除的i数(即使可以被另一个数除)。

像这样更改代码:

#include <stdio.h>
int main ()
{
    int i = 1, a = 2, is_prime;
    while (i <= 300)
    {
        is_prime = 1;

        while (a < i)
        {
              if (i % a == 0) {
                is_prime = 0;
                break;
              }

              a++;
        }

        if(is_prime)
          printf ("%d\n", i);

        a = 2;
        i++;
    }
    return 0;
}

关于c - 在C中找到素数从1到300,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25400191/

10-12 22:19