令 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
#include<iostream> #include<vector> #include<algorithm> #include<map> #include<set> #include<cmath> #include<climits> #include<sstream> #include<cstdio> #include<string.h> #include<unordered_map> using namespace std; long long int maxn=1000000; int main() { vector<int>primes(maxn,1); vector<int> p; p.push_back(0); int m,n; scanf("%d%d",&m,&n); for(long long i=2;i<=maxn;i++) { if(primes[i]==1) { p.push_back(i); if(p.size()>n) break; for(long long j=i+i;j<=maxn;j+=i) primes[j]=0; } } int num=0; int state=0; for(int i=m;i<=n;i++) { if(state!=0) printf(" "); printf("%d",p[i]); state=1; num++; if(num%10==0) { state=0; printf("\n"); } } return 0; }
原文地址:https://www.cnblogs.com/zhanghaijie/p/10346622.html
时间: 2024-10-19 00:48:23