令 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
解析:首先自定义判断素数的函数。设立K数组来存储素数,直接求出1——PN所有的素数存储K中,最后输出即可,注意每十个换行。
#include <stdio.h>
#include <math.h>
long long k[10005];
long long su(long long n){int i=0,shifou=1;if(n==1) shifou=0;if(n==2) shifou=1;if(n>2){for(i=2;i<=sqrt(n);i++){if(n%i==0){shifou=0;break;}}}return shifou;
}
int main()
{long long a,b,m=0,shu=0,l=0,cnt=0,sum=0,i=0;while(~scanf("%lld%lld",&a,&b)){cnt=b;for(i=2;;i++){if(su(i)==1){k[m]=i;m++;sum++;if(sum==cnt){break;}}}for(i=a-1;i<=b-1;i++){if(l==1) printf(" ");l=1;printf("%lld",k[i]);shu++;if(shu==10) printf("\n"),shu=0,l=0;}shu=0,m=0,l=0,sum=0; }return 0;
}