在C ++中打印低于n的所有素数(文件崩溃)

时间:2017-10-22 03:38:16

标签: c++ crash primes

我编写了一个C ++程序,打印低于n的所有素数,但程序在执行时会一直崩溃。

#include <iostream>

using namespace std;

bool premier(int x) {
    int i = 2;
    while (i < x) {
        if (x % i == 0)
            return false;
        i++;
    }
    return true;
}

int main() {
    int n;
    int i = 0;
    cout << "entrer un entier n : ";
    cin >> n;
    while (i < n) {
        if (n % i == 0 && premier(i))
            cout << i;
        i++;
    }
    ;
}

1 个答案:

答案 0 :(得分:1)

正如Igor指出的那样,in%i完成时第一次为零。由于您只需要素数且最小素数为2,因此我建议您将i初始化为2而不是0

您希望打印小于n的所有素数,并且具有检查素数的功能。

只是

while (i < n){
    if (  premier(i) == true ) 
        cout<<i;
    i++;
}

在打印时,添加一些字符来分隔数字,以便能够区分它们,如

cout<<i<<endl;

P.S:我认为你称之为C ++程序。不是剧本。

修改:This可能会让您感兴趣。