您的位置:首页 > 其它

PAT Basic Level 1013. 数素数(20)

2014-03-12 19:07 267 查看
【来源】

1013. 数素数(20)

【分析】

本题要求输出第M个至第N个素数(0<M≤N≤10000)。

思路为先估计第10000个素数的数值P,然后遍历从2到P的数,如果是素数,则计数。如果计数在M和N之间,则输出该数。同时使用一个单独的计数变量统计输出的素数的个数,每10个输出换行。

【源码】

#include <iostream>
#include <cmath>
using namespace std;

bool isPrime(int n)
{
if (n < 2){
return false;
}
if (n == 2){
return true;
}
for (int i = 2; i <= sqrt(n); ++i){
if (n % i == 0){
return false;
}
}
return true;
}

int main()
{
int m, n;
cin >> m >> n;

int no = 0;
int count = 0;
for (int i = 2; i <= 104729; ++i){
if (isPrime(i)){
++no;
if (no >= m && no <= n){
if (count % 10 == 0){
cout << i;
}
else{
cout << " " << i ;
}
++count;
if (count % 10 == 0){
cout << endl;
}
}
}
}

return 0;
}

【点评】

本题考查素数的判定等知识。博主在做这道题时,网上搜索了第10000个素数的值,作为搜索的上界。应该有其他方式解决此问题,有空再改进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT 素数 质数