令Pi表示第i个素数。现任给两个正整数M <= N <= 10^4,请输出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
思路:此题避免两处陷阱:①10^4是指素数的编号,遍历前应将maxn设的更大一些;②虽然每10个数字后都要换行,但如果是最终个数是10的整数倍,那么最终格式不能出现多余的/n,否则还是提示格式错误。
#include<cstdio>#include<cmath>const int maxn=1000010;bool judge(int a){ int i=floor(sqrt(a)); int k=2; if(a==1) return 0; else if(a==2) return 1; else{ while(k<=i&&a%k!=0) k++; if(k<=i) return 0; else return 1;//素数 }} int main(){ int M,N; int num=1; int cnt=0; scanf("%d%d",&M,&N); for(int j=2;j<=maxn;j++){ if(num>N) break; else if(judge(j)&&num<=N){ if(num>=M){ PRintf("%d",j); cnt++; if(num<N&&cnt%10!=0) printf(" "); if(cnt%10==0) printf("/n"); } num++; } } return 0;}新闻热点
疑难解答