牛客网PAT乙级第三题,数素数,题目描述大致如下:
令Pi为第i个素数,在一行中输入正整数M和N(M<=N<=10000),以空格分隔,输出PM到PN之间的所有素数,每10个数字占1行,其间以空格分隔,行末不得有多余空格。
题目要求的输入输出如下:
实际程序的运行结果如下:
代码如下:
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int prime[10005];
int is_Prime(int x)
{
int i;
for (int i = 2; i <= sqrt(x); i++)
{
if (x%i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int m, n;
while (cin >> m >> n)
{
//检查输入值
if (n > 10000 || m > 10000 || m > n)
{
return -1;
}
int i, j;
int count = 0;
//将素数存入Prime数组
for (int i = 2; ; i++)
{
if (is_Prime(i) == 1)
{
prime[count] = i;
if (count >= n)
{
break;
}
count++;
}
}
//输出Prime数组
int t = 1;
for (int j = m - 1; j < n; j++)
{
if (t % 10 == 0)
{
cout << prime[j] << '\n';
}
else if (j == n - 1)
{
cout << prime[j];
}
else
{
cout << prime[j] << ' ';
}
t++;
}
}
return 0;
}