第2章 算法分析:课后习题

该博客详细介绍了Eratosthenes筛选法,包括其O(NloglogN)的时间复杂度分析,并引用了Knuth的相关论述。此外,还探讨了如何求解主要元素,包含算法描述、代码实现及程序演示。
摘要由CSDN通过智能技术生成

1:Eratosthenes筛选法

算法描述O(NloglogN):   时间复杂度的推断》》Knuth,Volume 2,page 394

Eratosthenes筛是一种用于计算小于N的所有素数的方法。我们从制作整数2到N的表开始。我们找出最小的未被删除的整数i,打印i,然后删除i,2i,3i,......。当i> √N时,算法终止。

算法代码:

void Eratosthenes(int n)
{
	for (int i = 2; i < n+1; i++)
		a[i]=1;
	for (int i = 2; i <= sqrt(n); i++)
	{
		if(a[i]==1)
		{
			int j=2;
			while(i*j <= n)
			{
				a[i*j]=0;
				j++;
			}
		}
		
	}
	for (int i = 2; i <= n; i++)
		if(a[i]==1)
			cout<<i<<" ";
}

程序演示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值