1013 数素数 (20 分)
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 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和自身整除的数为素数,注意其中判断条件可以是i*i<n,减少复杂度。之后就是简单的数数,输出给定要求的素数,要注意输出的格式换行和空格问题。
AC代码:
#include<iostream> using namespace std; bool isprime(int x){ //判断是否为素数 for (int i = 2; i*i <= x; i++) //判断条件i*i<x 即可,无需i<x if (x%i == 0) return false; return true; } int main(){ int m, n; cin >> m >> n; int count=0,count2=0; //count用来计第几个素数,count2只是用来输出要求格式的 for (int i = 2;count<n; i++){ if (!isprime(i)) continue; count++; if (count >= m){ //从第m个开始输出,到第n个结束 cout << i; count2++; if (count<n && count2 % 10 == 0) //满10个换行,否则输出空格 cout << endl; else if (count<n) //count<n用来控制最后没有空格 cout << " "; } } return 0; }