标签: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