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 }