我想檢查一個數是否爲素數。這裏是我的代碼:爲特定輸入提供錯誤輸出的程序
#include <iostream>
using namespace std;
int main(){
int num;
int i, k = 0;
cin >> num;
for(i = 2; i < num; i++){
if(num % i == 0){
k = k + 1;
}
}
if(k > 0){
cout << "The number is not prime" << endl;
}else{
cout << "Prime!" << endl;
}
return 0;
}
當我輸入6,78,...等它是給出正確的輸出。 但是當我輸入4294967296這不是質數時,它返回Prime!
。
所以我需要使用更長的數據類型,比如'long long'? – Sakir
@Sakir對於這個特定的情況,是的 - 你只需要一個更大的類型。也可能是'unsigned'。但是,無論如何,你的算法對於數字很慢。 int可存儲的最大正值是2147483647,在這種情況下,程序需要多長時間才能完成? – Barry
我知道。我花了差不多22秒。我會用sieve算法:) – Sakir