素數判定(不用除法和求餘)
阿新 • • 發佈:2019-01-10
題目1047:素數判定
時間限制:1 秒 記憶體限制:32 兆 特殊判題:否 提交:4800 解決:2241
題目描述:
給定一個數n,要求判斷其是否為素數(0,1,負數都是非素數)。
輸入:
測試資料有多組,每組輸入一個數n。
輸出:
對於每組輸入,若是素數則輸出yes,否則輸入no。
樣例輸入:
13
樣例輸出:
yes
來源:
2009年哈爾濱工業大學計算機研究生機試真題
#include #include using namespace std; #define MAX 10000000 bool is_prime[MAX]; void f_prime(){ //素數。指在一個大於1的自然數中,除了1和此整數自身外,沒有其他因數。 //最小的三個素數是 2 3 5 //若程式超時 可適當調整MAX int tmp=sqrt(MAX); for(int i=2;i=tmp) ///當i比較大時,i*i可能會溢位 return; for(int j=i*i;j>n){ if(n<=1) cout<<"no\n"; else{ if(is_prime[n]) cout<<"yes\n"; else cout<<"no\n"; } } return 0; }