ny 187 快速查找素数

快速查找素数

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

int vis[MAXN];
int p[200000];  //存放素数
void prime()
{
    memset(vis,0,sizeof(vis));
    int i;
    long long j;
    int t=1;
    for(i=3; i<MAXN; i+=2)
        if(!vis[i])
        {
            p[t++]=i;
            for(j=(long long)i*i; j<MAXN; j+=i*2)
                vis[j]=1;
        }
}
int main()
{
    prime(); 
    int n,i;
    while(scanf("%d",&n) && n!=0)
    {

        printf("2");
        for(i=1; p[i]<=n && p[i]!=0; i++)
            printf(" %d",p[i]);
        printf("\n");
    }
    return 0;
}

 

posted @ 2012-08-13 19:58  luosw  阅读(198)  评论(0编辑  收藏  举报