码迷,mamicode.com
首页 > 其他好文 > 详细

学了一种新的素数筛,和以前的不一样哦!

时间:2014-09-06 09:42:22      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   for   数据   div   sp   

求素数

Time Limit: 100ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

 

求小于n的所有素数的数量。

输入

 

多组输入,输入整数n(n<1000000),以0结束。

输出

 

输出n以内所有素数的个数。

示例输入

10
0

示例输出

4

提示

  以这道题目为例,要找出n以内的素数, n<=1000000.

  为了节省时间,用素数筛 先把1000000以内的素数全部标记出来!

 

   此素数筛核心算法代码:

   这样跑完这个代码,是素数的会标记为0, 不是素数的标记为1。  数据处理完毕!

	int f[1000004];
	int i, j;
	memset(f, 0, sizeof(f));

    f[1]=1 ;  //标记1的不是素数  标记0的是素数
	i=2;
	while(i<=500000)
	{
		for(j=i*2; j<=1000000; j+=i )
		{
			f[j]=1;
		}
		i++;
		while(f[i]==1)
		{
			i++;
		}
	}

 

 

 

 

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

int f[1000004];

int main()
{
	int n;
	int i, j;
	memset(f, 0, sizeof(f));

    f[1]=1 ;  //标记不是
	i=2;
	while(i<=500000)
	{
		for(j=i*2; j<=1000000; j+=i )
		{
			f[j]=1;
		}
		i++;
		while(f[i]==1)
		{
			i++;
		}
	}
 
    int k, cnt;
	while(scanf("%d", &n) && n!=0 )
	{
		cnt=0;
        for(k=1; k<n; k++)
		{
         if(f[k]==0)
			 cnt++;
		}
		printf("%d\n", cnt );
	} 
	return 0;
}

 

学了一种新的素数筛,和以前的不一样哦!

标签:des   style   blog   color   io   for   数据   div   sp   

原文地址:http://www.cnblogs.com/yspworld/p/3959148.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!