c - 用 C 打印素数

标签 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");
}

最佳答案

在内部循环中:

for (int k = 1; k <= i/2; k++) 

您从 k = 1 开始,并测试 k 是否整除 i1 可以除任何整数,因此答案始终是“非素数”,但事实并非如此(请记住素数的定义)。从2开始:

for (int k = 2; k <= i/2; k++) 

关于c - 用 C 打印素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148937/

相关文章:

objective-c - Xcode 中获取随机垃圾值的原因

c - 鼠标不接受输入

javascript - 为什么球在我的 pong JavaScript Canvas 游戏中不能完全弹跳?

java - 对检索到的数组执行 for 循环

python - python的控制流语句的性能

Java - 在 JTable 单元格中禁用科学记数法

perl - 在 Perl 中将字符串中的十六进制数字转换为负数

c - 短路和可读性

c - 如何读取存储在 char 数组中的值?

python - 从文件 : how would you make this better? 中找到 N 最大的行