标签:div scripts reset list 数组 base 素数 include 一个
令 P?i?? 表示第 i 个素数。现任给两个正整数 M≤N≤10?4??,请输出 P?M?? 到 P?N?? 的所有素数。
输入在一行中给出 M 和 N,其间以空格分隔。
输出从 P?M?? 到 P?N?? 的所有素数,每 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
有一个测试点卡了很久, 原因是数组开的不够大(当时开了10010), 因为第10000个素数比10000大, 所以数组应再扩大, 开到1000010就过了
#include <iostream>
using namespace std;
const int MAX = 1000010;
int n, cnt;
int prime[MAX];
bool vis[MAX];
void Prime()
{
for(int i = 2; i <= MAX; ++ i)
{
if(!vis[i])
{
prime[++cnt] = i;
}
for(int j = 1; (j <= cnt) && (i * prime[j] <= MAX); ++ j)
{
vis[i * prime[j]] = true;
if(i % prime[j] == 0) break;
}
}
}
int main()
{
Prime();
int m, n, sum = 1;
cin >> m >> n;
for(int i = m; i <= n; ++ i)
{
if(sum % 10 == 0 && i < n)
{
cout << prime[i] << endl;
}
else if(i == n)
{
cout << prime[i];
}
else
{
cout << prime[i] << " ";
}
sum ++;
}
return 0;
}
标签:div scripts reset list 数组 base 素数 include 一个
原文地址:https://www.cnblogs.com/mjn1/p/10846478.html