令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤10的四次方,请输出 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<iostream> 2 using namespace std; 3 int main() 4 { 5 int min,max; 6 cin>>min>>max; 7 long sushu[105000];//用来存素数的数组 8 int n=max-min;//要输出素数的个数 9 int k=0;//素数数组的下角标 10 int m=0;//用来判断输出的格式 11 for(int i=2;i<=105000;i++) 12 { 13 int flag=-1; 14 for(int j=2;j*j<=i;j++) 15 { 16 if(i%j==0) 17 { 18 flag=1; 19 break; 20 } 21 } 22 if(flag==-1)//到这里是对素数的判断 23 { 24 sushu[k]=i; 25 if(k>=min&&k<=max)//这里是对要输出的素数的判断 26 { 27 m++; 28 cout<<sushu[k-1]; 29 if(m%10==0) cout<<endl; 30 else if(m-1!=n) cout<<" "; 31 } 32 k++; 33 } 34 if(k-1==max) break;//退出外层遍历范围内的数的循环 35 } 36 return 0; 37 }
个人认为这道题的考点主要是在第四个测试点:
1、当N等于10的4次方时,你的用来存素数的数组应该给多少个内存;
2、你用什么方法来判断一个数是素数,如果用的方法不对,会使运行超时,这就涉及到素数的定义和性质了:https://blog.csdn.net/zlambert/article/details/65684470