南阳题目187-快速查找素数

来源:互联网 发布:画平面图的软件 编辑:程序博客网 时间:2024/06/14 09:09

快速查找素数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。
输入
给出一个正整数数N(N<=2000000)
但N为0时结束程序。
测试数据不超过100组
输出
将2~N范围内所有的素数输出。两个数之间用空格隔开
样例输入
510110
样例输出
2 3 52 3 5 72 3 5 7 11


这个题用普通的方法一一判断是会超时的,所以要用到打表的方法,把小于要求数的所有素数全标记出来!

不过要注意格式!

#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>using namespace std;int pri[2000008];void init_prime(){int i,j;for(i=2;i<=sqrt(2000000);i++){if(!pri[i]){for(j=i*i;j<=2000000;j+=i)pri[j]=1;}}}int main(){int num,a,b,i,j;memset(pri,0,sizeof(pri));init_prime();while(scanf("%d",&a),a){printf("2");for(i=3;i<=a;i++)if(!pri[i])printf(" %d",i);printf("\n");}return 0;}




0 0
原创粉丝点击