我正在尝试打印从用户处获得的达到特定值的素数。如果我只收到 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");
}
最佳答案
在内部循环中:
for (int k = 1; k <= i/2; k++)
您从 k = 1
开始,并测试 k
是否整除 i
。 1
可以除任何整数,因此答案始终是“非素数”,但事实并非如此(请记住素数的定义)。从2
开始:
for (int k = 2; k <= i/2; k++)
关于c - 用 C 打印素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148937/