问题描述
给定两个正整数m,n,找出第m个素数和第n个素数之间的所有素数,包括第m个素数。
题目分析
我们我可以创建一个数组,以n为参数,即找出从第一个到第n个之间的所有素数,将他们存到一个数组中。然后我们就可以直接从数组中取出第m到第n个素数并输出。
注意输出格式,满10换行,最后一个数不能有空格。
代码
#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
void createPrim(int n,vector<int> &a)
{
int count = 0;
for(int i = 2;;i++)
{
int flag = 0;
for(int j = 2;j <= sqrt(i);j++)
{
if(i % j == 0)
{
flag = 1;
break;
}
}
if(flag == 0)
{
a.push_back(i);
count++;
if(count == n)
break;
}
}
}
int main()
{
int m,n;
cin>>m>>n;
vector<int>prim;
createPrim(n,prim);
int count = 0;//记录当前输出素数的个数
for(int i = m - 1;i < n;i++)
{
count++;//记录当前输出素数的个数
if(count % 10 != 0 and count != n - m + 1)
cout<<prim[i]<<" ";
//虽然当前不满10,但是已经是最后一个素数了,所以仍然不能输出空格
else if(count == n - m + 1)
cout<<prim[i];
else
cout<<prim[i]<<endl;
}
return 0;
}
总结
答题用时9min
Q13——finish√