快速查找素数 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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值