51nod 1106 质数检测

 题意:给定数判断是不是质数  大数据 

       题解: 判断是不是质数的同时判断<=n的质数个数并赋值

                   对于大数n的判断可以用:使m*m>n  然后看n%k==0(k为小于M的所以质数)  没有的话说明n为质数

      AC代码: 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int prime[100005],is_prime[100005];
 4 int n,p,t;
 5 void seve()
 6 {
 7     memset(is_prime,0,sizeof(is_prime));
 8     is_prime[0]=is_prime[1]=1;
 9     p=0;
10     for(int i=2;i<=n;i++)
11         if(is_prime[i]==0)
12     {
13            prime[p++]=i;
14         for(int j=i*2;j<=n;j+=i)
15         {
16 
17             is_prime[j]=1;
18         }
19     }
20 
21 }
22 int main()
23 {
24     n=100005;
25     cin>>t;
26     int a;
27     seve();
28     for(int i=0;i<t;i++)
29     {
30             int ok=0;
31         cin>>a;
32         if(a==2)
33             cout<<"yes"<<endl;
34         else
35         {
36             for(int j=0;prime[j]*prime[j]<=a;j++)
37             {
38                 if(a%prime[j]==0)
39                 {
40                     ok=1;
41                     break;
42                 }
43             }
44             if(ok)cout<<"no"<<endl;
45             else cout<<"yes"<<endl;
46         }
47     }
48     return 0;
49 }

 

posted @ 2017-08-18 23:36  sortmin  阅读(168)  评论(0编辑  收藏  举报