1. 程式人生 > >素數判定(不用除法和求餘)

素數判定(不用除法和求餘)

題目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;
}