链接:https://www.nowcoder.com/questionTerminal/e0fb49acb75f47e8b6fa2077d9071799?toCommentId=3208952
来源:牛客网
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。
输入描述:
输入在一行中给出M和N,其间以空格分隔。
输出描述:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
示例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
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int M,N,count=0;
long n=2;
long sushu[10001];//数组用来保存
int x=1;//每行个数
cin>>M>>N;
do{
long i;
long m=sqrt(n);
for(i=2;i<=m;i++)
{
if(n%i==0)goto loop;// 这里使用break会出错停止运行,换个方式用goto
}//判断素数
if(i>m)
{
sushu[count]=n;
count++;
loop:
n++;
}
}while(count<N);
if(M==N)
{
cout<<sushu[M-1];
}
if(M<N)
{
for(int j=M;j<=N;j++)
{
if(x%10==0)
{
cout<<" "<<sushu[j-1]<<endl;
x++;
}
else if(x%10==1)
{
cout<<sushu[j-1];
x++;
}
else
{
cout<<" "<<sushu[j-1];
x++;
}
}
}
}