判断素数 筛法

//判断素数 筛法 
/*

求十万以内
任意一个数,是否为质数 
*/
#include
<iostream>
using namespace std;
int main(){
    
int x[100001];
    
int temp,n;
    
//初始化数组 
    for(int i=0;i<100001;i++)
       x[i]
=0;
    
//初始化数组完成 
    /*
    预计结果,
    数组中质数为0,其它为1 
    
*/
    
    x[
0]=x[1]=1;//因为 0和1不能通过计算得到,所以只能手工置1 ,1即不是合数也不是质数 
    for(int i=2;i<100001;i++){//循环数组中的每个数 
        if(x[i]==0){//如果该数所存的值为0,即第一次接触此数 
           temp=2*i;//将它的二倍,及n倍(要小于100000) ,都置为1,因为这些数都能被i整除 
           while(temp<=100000){
                 x[temp]
=1;             
                 temp
+=i;
           }
        }
    }
    
while(scanf("%d",&n)!=EOF){
      
if(x[n]==0)
            printf(
"Yes\n");
      
else 
            printf(
"No\n");
    }
}

posted @ 2008-07-25 22:50  tiny羊  阅读(720)  评论(0)    收藏  举报