我正在开发一个程序,其中我必须从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/