gpt4 book ai didi

c - 在 C 中使用埃拉托色尼筛法的素数

转载 作者:行者123 更新时间:2023-12-02 22:19:22 25 4
gpt4 key购买 nike

我写了下面的程序来显示 150 以内的所有质数。它根本没有执行。这有什么问题?

# include <stdio.h>
int main(void)
{
int p[150], i, j;

for (i = 2; i < 150; i++)
p[i] = 0;

i = 2;


while (i < 150){

if (p[i] == 0)
printf("%i ", i);

for (j = 1; i*j <= 150; j++)
p[i*j] = 1;

i++;
}

return 0;
}

最佳答案

  1. 您正在访问 p[i*j] ,这超出了有效的 [0-149] 范围。条件i*j <= 150将在 i*j 时评估为真等于 150,差一。应该是i*j < 150 .
  2. 标准输出流被缓冲。您需要在循环结束时刷新。尝试添加 fflush(stdout) .
  3. 可能不太重要,但如果您关心结果数组(例如:想稍后使用它),p[2] 的值被错误地设置为 1。但是,您的程序仍会打印 2,但那是因为您的循环在更改 p[i*j] 的值之前打印了数字。 .最后,数字打印正确,但数组中的值并不完全正确。

关于c - 在 C 中使用埃拉托色尼筛法的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13983167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com