用C打印出素数

gal*_*fan -2 c for-loop numbers cs50

我正在尝试将素数打印到从用户获得的某个值.如果我只收到1的答案,我想我的for循环有问题吗?

#include <stdio.h>
#include <cs50.h>

int main (void)
{
    printf("Length: ");
    int length = GetInt();

    bool notPrime = false;

    for (int i = 1; i < length; i++)
    {
        for (int k = 1; k <= i/2; k++)
        {
            if (i % k == 0)
            {
                notPrime = true;
                break;
            }
            else
            { 
                notPrime = false;
            }   
        }
        if (notPrime == false)
        {
            printf("%d ", i);
        }
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ppo 5

在内部循环中:

for (int k = 1; k <= i/2; k++) 
Run Code Online (Sandbox Code Playgroud)

你开始k = 1并测试是否k分开i.1除了任何整数,所以答案永远是"非素数",事实并非如此(记住素数的定义).从2:

for (int k = 2; k <= i/2; k++) 
Run Code Online (Sandbox Code Playgroud)