NYOJ 快速查找素数问题(筛法)

来源:互联网 发布:淘宝开店怎么做推广 编辑:程序博客网 时间:2024/05/16 11:13

快速查找素数

时间限制: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<stdio.h>#include<string.h>#define N 2000000 int a[N];int main(){int n;memset(a,0,sizeof(a));for(int i=2;i*i<=N;i++)//找到二百万以内的不是素数标记{if(!a[i])for(int j=i*i;j<=N;j+=i)a[j]=1;}do{scanf("%d",&n);for(int i=2;i<=n;i++)    {if(!a[i])printf("%d ",i);}printf("\n");    } while(n!=0);    return 0;}
1 0
原创粉丝点击