PAT1013
1013 数素数 (20 分)
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
1 #include <bits/stdc++.h> 2 using namespace std; 3 bool check[110000]; 4 int prime[10005]; 5 int tot,ans; 6 int main() 7 { 8 for(int i=2;i<109994;i++) 9 { 10 if(!check[i]) 11 prime[tot++]=i; 12 for(int j=0;j<tot;j++) 13 { 14 if(i*prime[j]>109994) 15 break; 16 check[i*prime[j]]=1; 17 if(i%prime[j]==0) 18 break; 19 } 20 } 21 int a,b,flag=1; 22 cin>>a>>b; 23 for(int i=a-1;i<b;i++) 24 { 25 if(flag) 26 {cout<<prime[i]; 27 flag=0; 28 } 29 else cout<<" "<<prime[i]; 30 ans++; 31 if(ans%10==0) 32 { 33 flag=1; 34 cout<<endl; 35 } 36 } 37 return 0; 38 }
一开始check[]数组开100000的大小,以为很大了,但是还是开小了,第10000个素数的值为104729。