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个素数的值,作为搜索的上界。应该有其他方式解决此问题,有空再改进。
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 (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT (Basic Level) Practise (中文) 1013. 数素数 (20)
- PAT BASIC LEVEL 1013. 数素数 (20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20)
- PAT(basic level) 1013 数素数(20)
- PAT (Basic Level) Practise (中文)1013. 数素数 (20) C语言
- PAT (Basic Level) Practise (中文)- 1013. 数素数 (20)
- PAT (Basic Level) 1013. 数素数 (20)
- 【C++】浙大PAT (Basic Level)1013. 数素数 (20)
- PAT乙级(Basic Level)真题-1003 数素数 (20)
- PAT (Basic Level) Practise:1013. 数素数
- PAT1013 BASIC:数素数 (20)
- PAT (Basic Level) Practise (中文) 1013数素数 (20)
- PAT (Basic Level) Practise (中文)- 1007. 素数对猜想 (20)
- PAT BASIC LEVEL 1007. 素数对猜想 (20)
- Pat(Basic Level)Practice--1013(数素数)
- PAT乙级(Basic Level)真题-1013 组个最小数 (20)
- PAT (Basic Level) Practise (中文)1007. 素数对猜想 (20)
- PAT (Basic Level) Practise-1007. 素数对猜想 (20)