1013 数素数 区间素数 指定格式输出 找素数快速方法 PTAbasic 浙大C++

Rhea ·
更新时间:2024-09-20
· 658 次阅读

题目:
令 P​i表示第 i 个素数。现任给两个正整数 M≤N≤104​​,请输出 P​M到 PN的所有素数。
输入格式:
输入在一行中给出 M 和 N,其间以空格分隔。
输出格式:
输出从 P​M到 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

代码:

#include #include using namespace std; int main(){ int min,max,now=1,count=1; cin>>min>>max; if(min<1) min=1; int prime[max-min+1]; if(min==1) prime[0]=2; count++; while(count<=max){ int flag=1; now=now+2; int mid=sqrt(now); for(int i=2;i<mid+2;i++){ if(now%i==0){ flag=0; //cout<<now<=min){ //cout<<"存入素数"<<now<<" "; prime[count-min]=now; } count++; } } for(int i=0;i<count-min-1;i++){ cout<<prime[i]; if((i+1)%10==0) cout<<endl; else cout<<" "; } if((count-min-1)%10==0&&max!=1&&min!=max) cout<<endl; cout<<prime[count-min-1]; }

要点:
计算素数的快速方法
1、每次增加2,偶数不可能是素数。
2、最大值设置为其开方
3、用除去已有的数的倍数,不是素数


作者:乔Emma



c+ 输出 方法 素数 C++

需要 登录 后方可回复, 如果你还没有账号请 注册新账号