gpt4 book ai didi

c++ - 基本嵌套循环计算 1 - 239(含)之间的素数

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

我正在开发一个程序,我必须打印出 1 到 239 之间的素数,包括 1 和 239(我知道一和二可能不是素数,但我们会认为它们是素数这个程序)它一定是一个非常简单的程序,因为我们只讨论了一些基础知识。到目前为止,我的代码是这样的,这对我来说似乎是不错的逻辑流程,但不会产生输出。

#include <iostream>

using namespace std;
int main()
{
int x;
int n = 1;
int y = 1;
int i = 0;

while (n<=239)
{x = n % y;
if (x = 0)
i++;
if (y < n)
y++;
n++;
while (i == 2)
cout << n;
}
return 0;
}

我希望它的工作方式是取 n,只要 n 为 239 或更小,然后用从 1 到 n 的每个数字进行预制模除法。每当一个数字 y 均匀地进入 n 时,计数器就会增加 1。如果计数器等于 2,那么这个数字就是素数,我们将它打印到屏幕上。任何帮助将不胜感激。谢谢

最佳答案

std::cout << std::to_string(2) << std::endl;
for (unsigned int i = 3; i<240; i += 2) {
unsigned int j = 3;
int sq = sqrt(i);
for (; j <= sq; j += 2) if (!(i%j)) break;
if (j>sq) std::cout << std::to_string(i) << std::endl;
}

首先,素数定义:素数(或质数)是大于1的自然数,除1和它本身外没有正约数。

因此您可以跳过所有偶数(因此... i+=2)。此外,尝试对大于 sqrt(i) 的数进行除法是没有意义的,因为这样它将有一个小于 sqrt(i) 的除数,并且代码会找到它并移动到下一个数字。仅考虑奇数,意味着我们可以跳过偶数作为除数(因此 ... j+=2)。

在您的代码中显然存在初学者错误,例如 (x = 0) 而不是 x==0。但逻辑也不令人信服。我同意@NathanOliver 的观点,您需要学习使用调试器来查找所有错误。至于其他的,祝你学业顺利。

关于c++ - 基本嵌套循环计算 1 - 239(含)之间的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33176155/

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