题滴链接https://pintia.cn/problem-sets/994805260223102976/problems/994805309963354112
1013 数素数 (20 分)
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 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
鄙人拙见:
- 注意m和n的极限是第10000个素数即整数104729
- 注意输出的格式可利用count标记行数,避免多输出一行
C++参考代码1.0:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n = 110000;
int flag[n];
for(int i = 2; i < n; i++)
{
flag[i] = 1;
}
for(int i = 4; i < n; i++)
{
for(int j = 2; j <= sqrt(i); j++)
{
if(i % j == 0)
{
flag[i] = 0;
}
}
}
int sushu[n];
int t = 1;
for(int i = 2; i < n; i++)
{
if(flag[i] == 1)
{
sushu[t] = i;
t = t + 1;
}
}
int a,b;
scanf("%d %d",&a,&b);
int geshu;
geshu = b - a + 1;
int count;
if(geshu % 10 == 0)
{
count = geshu / 10 - 1;
}
else
{
count = geshu / 10;
}
for(int i = a + 1; i <= b + 1; i++)
{
printf("%d",sushu[i - 1]);
if(i <= b && (i - a) % 10 != 0)
{
printf(" ");
}
if( (i - a) % 10 == 0 && count > 0)
{
printf("\n");
count = count - 1;
}
}
return 0;
}