PAT 1013. 数素数 (20)
2018-02-21 21:21
218 查看
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。输入格式:输入在一行中给出M和N,其间以空格分隔。输出格式:输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入样例:
#include<stdio.h>
#include<math.h>
const int maxn=1000001;
int pnum=0,prime[maxn];
bool pri[maxn]={0};
void Find_prime(int n){ //先将范围内的所有素数找出来。 使用的是筛选法。
for(int i=2;i<maxn;i++){
if(pri[i]==false){
prime[pnum++]=i;
if(pnum>=n)break; //如果找到的个数满足了要求就退出。以加快速度。
for(int j=i+i;j<maxn;j=j+i){
pri[j]=true;
}
}
}
}
int main()
{
int m,n,count=0;
scanf("%d%d",&m,&n); //读入两个整数
Find_prime(n);
for(int i=m;i<=n;i++){
printf("%d",prime[i-1]); // 输出
count++;
if(count % 10 !=0 && i<n)printf(" "); //当不是第十个以及最后一个素数时,进行输出空格
else printf("\n") ;
}
}
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
#include<stdio.h>
#include<math.h>
const int maxn=1000001;
int pnum=0,prime[maxn];
bool pri[maxn]={0};
void Find_prime(int n){ //先将范围内的所有素数找出来。 使用的是筛选法。
for(int i=2;i<maxn;i++){
if(pri[i]==false){
prime[pnum++]=i;
if(pnum>=n)break; //如果找到的个数满足了要求就退出。以加快速度。
for(int j=i+i;j<maxn;j=j+i){
pri[j]=true;
}
}
}
}
int main()
{
int m,n,count=0;
scanf("%d%d",&m,&n); //读入两个整数
Find_prime(n);
for(int i=m;i<=n;i++){
printf("%d",prime[i-1]); // 输出
count++;
if(count % 10 !=0 && i<n)printf(" "); //当不是第十个以及最后一个素数时,进行输出空格
else printf("\n") ;
}
}
相关文章推荐
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT --- 1013. 数素数 (20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- 浙江大学PAT上机题解析之1013. 数素数 (20)
- PAT(basic level) 1013 数素数(20)
- 编程题目: PAT 1013. 数素数 (20)
- 1013. 数素数 (20) PAT
- PAT (Basic Level) Practise (中文)- 1013. 数素数 (20)
- PAT乙题1013. 数素数 (20)
- [PAT乙级]1013. 数素数 (20)
- 编程题目: PAT 1013. 数素数 (20)
- 【PAT】(乙级)1013. 数素数 (20)
- PAT乙级 1013. 数素数 (20)
- PAT 1013 数素数 (20)
- pat乙级1013. 数素数 (20)
- PAT 1013. 数素数 (20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT乙级 1013. 数素数 (20)
- 乙级 PAT 1013. 数素数 (20)
- PAT 1013. 数素数 (20) (C语言)