基本的嵌套循环计算1到239之间的素数

时间:2015-10-16 17:22:11

标签: c++ loops

我正在开发一个程序,我必须在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,则数字为素数,我们将其打印到屏幕。任何帮助都会非常感激。谢谢

2 个答案:

答案 0 :(得分:0)

让我们从常见错误开始:

首先,您想要使用cin

从用户那里获取输入
cin>>n;  // write it before starting your while loop

然后,

if (x = 0)

应该是:

if (x == 0)

将您的第二个while循环更改为:

while (i == 2){
        cout << n;
        i++;
    }

答案 1 :(得分:0)

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,您需要学习使用调试器来查找所有错误。其余的,祝你好运。