2017-10-22 79 views
0

我寫了一個C++程序,打印所有低於n的素數,但程序在執行時不斷崩潰。在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

調查此問題的正確工具是調試器。 – chris

+6

你用'i == 0'執行'n%i'' –

+0

從'i = 1'開始而不是 –

回答

1

由於Igor指出,i爲零時首次n%i完成。既然你只想素數,最小的素數是2,我建議你初始化i2而不是0

您想要打印小於n的所有素數,並且具有檢查素數的功能。

只是

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

雖然印刷,添加一些字符分隔的數字序能夠區分它們像

cout<<i<<endl; 

P.S:我想你把這個C++程序。不是腳本。

編輯:This可能會讓你感興趣。