快速查找素数 XYNUOJ

                                                1913: 快速查找素数

                                                                 时间限制: 4 Sec  内存限制: 64 MB
                                                                            提交: 165  解决: 61

                                                                                        [提交][状态][讨论版]

题目描述

现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数。

输入

给出一个正整数数N(N<=2000000) 但N为0时结束程序。 测试数据不超过100组

输出

将2~N范围内所有的素数输出。两个数之间用空格隔开

重点:

素数的筛选法则

附AC代码:

#include<stdio.h>
#include<string.h>
#include<math.h>

int a[2000000];
int main()
{ 
	int N;
	while(scanf("%d",&N))
	{
		if(N==0) break;
	
		int i;
		
    memset(a,0,sizeof(a));//关键步骤 
    a[1]=1;
    for( i=2; i<=sqrt(N); i++)
    {
        if(a[i]==0)
        {
            for(int j=2; j*i<=N; j++) 
            {
                a[i*j]=1;
            }
        }
    }//关键步骤 
    for(i=1;i<=N;i++)
    {
    	if(a[i]==0)
    	{
    		printf("%d ",i);
		}
	}
	printf("\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/a1056139525/article/details/81332076