1、素数筛(这应该是最全的总结了,四种基本方法,7种优化方法)

您所在的位置:网站首页 php求100到1000之间的素数 1、素数筛(这应该是最全的总结了,四种基本方法,7种优化方法)

1、素数筛(这应该是最全的总结了,四种基本方法,7种优化方法)

2024-07-15 19:06| 来源: 网络整理| 查看: 265

素数筛 基本介绍

素数问题是数学领域中的基本问题,也是程序设计或者面试笔试中的常见问题。计算机的诞生,让素数的计算过程大大加快。

本文是这段时间我个人学习素数相关知识的阶段性总结,也是对知识的记录和分享。

希望和大家一起学习、一起进步。以后还会陆续更新其他方面的知识。

首先,明确素数的定义:

质数(素数)是指在大于 1 的**自然数**中,除了 1 和它本身以外不再有其他因数的自然数。—“质数(素数)百度百科”

根据素数这一定义,可以提炼出几点内容

素数是自然数,因此是整数素数是大于1的自然数,因此小于等于1的数字都不是素数(包括负数,0和小数)素数只有两个因数,1和自身结合1,2,3点,可以推断出,在自然数范围内,最小的素数是2

同时根据这一定义,发展出许多计算素数的方法,以下让我一一介绍。

小技巧,sqrt赋值给一个变量

算法 1、朴素算法 1.1、 试除法

朴素算法即最为直观的算法,这里只是根据素数的定义而设计的算法,没有涉及其他方面的知识。

根据素数的定义:素数只有两个因子,1和自身。

因此如果有其他因子的数字,都不是素数,这类数字称之为合数,概念上和素数相对。

从因子这一点入手,根据因子个数的多少,判断一个数字是否为素数。

这里采用试除法,正如字面意思一样,尝试相除。要判断n是否为素数,则在[2,n-1]范围内,逐一枚举数字,对每一素数,尝试用n去除。

如果可以被整除,则说明枚举的数字是n的因子。根据素数定义,数字n非素数如果不可以被整除,则需要继续往后枚举,查看其他枚举数字相除之后的结果 如果后面有可以被整除的数字,则结果和上面第一条一样。如果在[2,n-1]范围内都没有可以被整除的数字,则说明数字n在[1,n]范围内只有1和n两个因子,因此n是素数。

程序代码

时间复杂度为O(n)

#include int IsPrime(int n) { int i; //素数是指在大于 1 的自然数中,除了1和它本身以外不再有其他因数的自然数。 if(n


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3