1013 数素数 (20)(20 分)
令P~i~表示第i个素数。现任给两个正整数M <= N <= 10^4^,请输出P~M~到P~N~的所有素数。
输入格式:
输入在一行中给出M和N,其间以空格分隔。
输出格式:
输出从P~M~到P~N~的所有素数,每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
作者: CHEN, Yue
单位: PAT联盟
时间限制: 200ms
内存限制: 64MB
代码长度限制: 16KB
题目要求实现 从第几个素数到第几个素数 所以我们可以写一个子函数判断素数 然后计数换行即可。
#include<bits/stdc++.h> using namespace std; int tdc(int x) { for (int i = 2; i <= sqrt(x); i++) if (!(x%i)) return 0; return x>=2?1:0; // 只有正数才是质数 虽然这道题没有考察 } void solve() { int cnt = 1; int open,last; cin >> open >> last; for (int i=2,count=1;cnt<=last;i++) { // count 换行操作 if (i != 2 && i % 2 == 0) continue; if (cnt < open&&tdc(i)) cnt++; else if(cnt>=open&&tdc(i)&&cnt<=last){ count==1?cout << i:cout<<" "<<i; count++; if (count > 10) printf("\n", count = 1); cnt++; } } } int main() { solve(); return 0; }