令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出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~sqrt(n)之内的自然数都不可整除n即可。
示例代码:
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int x)//求素数
{
if(x==2)//2为素数
;
else
for(int i=2;i<=sqrt(x);++i)//2~sqrt(n)内所有自然数 取余都不可为0
{
if(x%i==0)
return 0;
}
return 1;
}
int main() {
int m,n;
cin>>m>>n;
int count =0,count1=0;
for(int i=2;count1<=n;++i) //循环边界为第n个素数
{
// if(i=1)count1++;
// else
if(isPrime(i))
{
count1++;
if(count1>=m&&count1<=n)//判断是否在第m~n个数内
{
cout<<i;
count++;
if(count1!=n)//最后一个数后无空格和换行符
if(count%10)//十个数后换行
cout<<" ";
else
cout<<endl;
}
}
}
return 0;
}