关于可爱的质数的基础合集

本文介绍了质数的基本概念,通过试除法判断素数,讲解了质因数的概念并展示了如何分解质因数。接着,探讨了埃筛和线性筛两种高效的筛素数方法,是理解质数及其应用的良好起点。
摘要由CSDN通过智能技术生成

对于许多的数学家来说,质数一定是非常可爱的,在质数身上,有太多太多令人着迷的特性和谜题。
所以。。。。这玩意是真的难,我都快学吐了QAQ

不过嘛。。。经过几番对线,终于还是学到了那么一丢丢有关质数的知识,所以来这里做个笔记,如果有有缘人的话就分享一下也不错呀,嘿嘿。

1.质数的概念

质数的概念,其实我们在很早很早以前就学过了(依稀记得好像小学就已经学了呢)。但是为了防止某些二傻子(比如我)忘记它的概念,所以还是说一下吧:
质数是指,大于1,且只能被1和它本身整除的自然数集。
概念还是很好记的,有没有像我一样只记素数(质数的另一个名字),忘了质数的小伙伴QwQ
那么,我们要继续深入的了解素数,首先,就先得会判断一个数是不是质数。

2. 试除法判定素数

试除法判断素数是判断一个数是否是素数的最简单最粗暴的方法,而且效率也还阔以,时间复杂度是O(n)。思路就是把2到n-1,所有数都和n除一遍,如果都不能整除,那很显然,n就是个质数了。
代码长成介个样子

bool check_prime(int n)
{
   
	if(n < 2) return false;
	for(int  i = 2; i < n; i ++)
	{
   
		if(n % i == 0) return false;
	}
	return true;
}

当然,这个代码我们是可以优化一下的,把复杂度优化成O(sqrt(n))。
那么优化思路是怎样的呢,我们首先要了解一个性质,假设有一个数n,他可以被d整除,那么nj就也可以被n / d整除,其实这个性质是很好想通的。
那么由此可以看出,一个数的约数,都是成对出现的,所以我们在枚举的时候,可以之枚举较小的那一个,大的那一个也就被自然排除了。
那么,我们就可明确,我们在枚举时,只用枚举条件满足d <= n / d的数,我们可以很容易的化简出d <= sqrt(n),这样我们就可以把复杂度降成O(sqrt(n))了
代码其实就是把判定条件改一下下

bool check_prime(int n)
{
   
	if(n < 2) return false;
	for(int i = 2; i <= n / i; i ++)
	{
   
		if(n %
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值