快速寻找素数

快速查找素数

时间限制: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
个人理解:之前写的都超时了,这份在我电脑上也超时,在别人电脑上没超时
#include<stdio.h>
#define N 2000001
int a[N],i,j;
int main(){
    int m;
    for(i = 2;i <= 2000000;i++){
        if(a[i]==0)
            for(j = i + i;j <= 2000000;j += i)
                a[j] = 1;
    }
    while(scanf("%d",&m) && m!=0){
        for(i = 2;i <= m;i++){
            if(a[i] == 0){
                printf("%d ",i);
            }
        }
        printf("\n");
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章