PAT(乙级) 1013 数素数
程序员文章站
2024-03-15 15:32:54
...
题目内容
令 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
解题思路
(1)建立一个判断是否为素数的函数
(2)设置一个素数的计数器,当素数序号位于5到27之间时则进行记录
程序源码
#include <iostream>
#include <vector>
using namespace std;
int prime(int x){
if(x<2)
return 0;
int i = 2;
for(; i*i<=x; i++)
if(x%i == 0)
return 0;
return 1;
}
int main(void)
{
int m, n;
cin>>m>>n;
int j = 0, i = 2; //i为数字,j为当前的素数个数
vector<int> p(n-m+1); //p为素数表
//处理过程
while(j != n){
if(prime(i) == 1){
j++;
if(j>=m && j<=n)
p[j-m] = i;
}
i++;
}
//输出
j = 0;
for(i = 0; i < n-m+1; i++)
{
if(j!=0) cout<<" ";
cout<<p[i];
j++;
if(j == 10){
cout<<endl;
j = 0;
}
}
return 0;
}
上一篇: 筛选法求素数
下一篇: 计算1到N中包含数字1的个数