令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
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int main()
{
int M, N,count=0;
cout << "请输入两个数字" << endl;
cin >> M >> N;
int i = 0;
for (i = 2; count <= N; i++)
{
int tmp = 0;
for (int j = 2; j <=sqrt(i); j++)
{
if (i%j == 0)
tmp = 1;
if (i%j!=0)
count++;
for (int j = 2; j <= sqrt(i); j++)
if (i % j == 0)
++tmp;
if (tmp == 0)
++count;
if (tmp ==0 && count >= M&&count <= N)
cout << i << endl;
}
system( "pause");
return 0;
}
网上借鉴:
#include<iostream>
#include<cmath>
int main()
{
using namespace std;
int m, n, count = 0;
cin >> m >> n;
for (int i = 2; count <= n; i++)
{
int temp = 0;
for (int j = 2; j <= sqrt(i); j++)
if (i % j == 0)
++temp;
if (temp == 0)
++count;
if (count >= m && count <= n && temp == 0)
{
cout << i;
if ((count - m) % 10 == 9)
cout << endl;
else if (count != n)
cout << " ";
}
}
cout << endl;
return 0;
}