gpt4 book ai didi

c - C中for循环的奇怪输出(重复数字)

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:32 24 4
gpt4 key购买 nike

这是我寻找素数的代码。

int main (void){
int p, d;
_Bool isprime;

for (p=2;p<=50;++p){
isprime = 1;

for (d=2;d<p;++d){
if (p%d == 0)
isprime = 0;

if (isprime != 0)
printf("%i ", p);
}
}

return 0;
}

这个程序的输出是

3 5 5 5 7 7 7 7 7 9 11 11 11 11 11 11 11 11 11 13 13 13 13 13 13 13 13 13 13 13 15 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 21 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 25 25 25 27 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 33 35 35 35 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 37 39 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 45 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 49 49 49 49 49

数字看似正确,但却是重复的。我的代码有问题吗?还是编译器有问题?每次我使用 for 循环(不仅仅是这个程序)时,输出都是这样的。我该如何解决这个问题?

提前致谢!(抱歉我的英语不好)

最佳答案

您的代码的问题在于,它针对相同的 p 值多次打印 p。喜欢Eugene Sh.在评论中指出,通过将 if 语句向上移动一个级别,将其轻松修复到外部 for 循环。我还将 is_prime 更改为 bool 值,并编辑了它的设置方式。

int max_p = 50;
int p, d;
bool is_prime;

for (p = 2; p <= max_p; ++p) {
is_prime = true;

for (d = 2; d < p; ++d) {
if (p % d == 0) {
is_prime = false;
break;
}
}

if (is_prime) {
printf("%i ", p);
}
}

我假设我使用的 C++ 没有什么不同。

关于c - C中for循环的奇怪输出(重复数字),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54135572/

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