chenxi16

导航

PAT (Basic Level) Practice (中文) 1013 数素数

 

 

 1 #include<cstdio>
 2 #include<cmath>
 3 using namespace std;
 4 
 5 const int MAXN = 100000000;
 6 int a[MAXN];
 7 bool isprime(int x);
 8 int main(){
 9     int n,count=0;
10     for(int i=2;i<MAXN;i++){
11         if(isprime(i)==true){
12             a[i] = 1;
13             count++;
14             if(count==10000) printf("i: %d\n",i);
15         }
16     }
17 
18 
19 
20     scanf("%d",&n);
21     return 0;
22 }
23 
24 bool isprime(int x){
25     if(x==1) return false;
26     if(x==2) return true;
27     for(int i=2;i<=sqrt((double)x)+1;i++){
28         if(x % i==0) return false;
29         
30     }
31     return true;
32 }
View Code
 
因此在104729时有10000个素数。
 
 1 #include<cstdio>
 2 #include<cmath>
 3 using namespace std;
 4 const int MAXN = 10001;
 5 int p[MAXN],m,n;
 6 bool isprime(int x);
 7 void init();
 8 void deal();
 9 int main(){
10     init();
11     scanf("%d %d",&m,&n);
12     deal();
13     return 0;
14 }
15 bool isprime(int x){
16     if(x==1) return false;
17     else if(x==2) return true;
18 
19     for(int i=2;i<=sqrt((double)x)+1;i++){
20         if(x%i==0) return false;
21     }
22     return true;
23 }
24 void init(){
25     int count=1;
26     for(int i=2;i<10000000;i++ ){
27         if(isprime(i)){
28             p[count++] = i;
29             if(count==10001) break;
30         }
31     }
32 }
33 void deal(){
34     for(int i=m;i<=n;i++){
35         printf("%d",p[i]);
36         if(i!=n && (i-m+1)%10!=0) printf(" ");
37         else printf("\n");
38     }
39 }
View Code

 

posted on 2020-04-14 00:37  chenxi16  阅读(162)  评论(0编辑  收藏  举报