当前位置: 首页 > news >正文

算法中常用到的数学知识:埃拉托色尼筛法(获取质数)、欧几里得算法(求两个数最大公因数)

不管是在项目中还是面试时,一定的算法能力都是极其重要的。大多数算法只要有一定的基础,给足够的时间是可以写出来的,然而有一类算法,说难也不难,说简单也不简单,这种算法通常涉及到某种数学知识,如果了解这种知识那写出来就是易如反掌,而没了解过相应知识的就只能使用暴力解法,数据稍微多一点就超时,甚至暴力都写不出来。本文就给大家讲解一下两种相关的数学知识。

1.埃拉托色尼筛法

适用场景:

        获取一段数字中所有的质数。

基本步骤:

        1.创建一个列表:首先,创建一个从2开始到你想要检查的数n(包括n)的连续整数列表。

        2.标记第一个数:从列表中的第一个数2开始,因为它是第一个质数。

        3.划除倍数:从2的下一个数开始,标记2的所有倍数。因为这些数都可以被2整除,所以它们不是质数。

        4.移动到下一个未标记的数:在列表中找到下一个未被划除的数,这个数就是下一个质数。对于这个新的质数,重复步骤3,划除它的所有倍数。

        5.重复步骤:继续这个过程,每次都找到下一个未被划除的数,并划除它的所有倍数,直到你处理完所有小于或等于√n的数。因为一个数必须有一个因数小于或等于它的算数平方根。

        6.剩余的数:列表中未被划除的数就是质数。

        7.结束:当处理完所有小于或等于√n的数后,列表中剩余的未被划除的数就是范围内的质数。

基本代码:
//本段代码是我自己写的,不一定标准,有需要的同学可以自己查标准的写法。
let arr=[]
for(let i=2;i<=100;i++){//模拟一个2到100的数组arr.push(i)
}
let l=0,r=Math.ceil(Math.pow(arr[arr.length-1],1/2))//l为第一个质数的索引,r为最后一个数开方向上取整
while(arr[l]<=r){//外层循环从第一个数到最后一个数的开方向上取整for(let i=l+1;i<arr.length;i++){//内层循环是整个数组if(arr[i]%arr[l]===0){//判断该数能否整除第一个质数,能的话就从数组中删除,并且索引减一(因为for循环后面有一个加一,删除后不减一就会跳过一个数字)arr.splice(i,1)i--}}l++//内循环结束后第一个质数后移一位
}
console.log(arr)

打印结果为[2,100]内所有质数

 说明:

        大家看到这应该会有很多疑问,比如:如果开头不是2怎么办,开头不是质数怎么办等等。我的理解只能将数组左侧扩充到2,然后在判断过程中加上对原来范围的控制,因为寻找质数的暴力方法只能是从2开始一个一个相除,所以该方法在寻找范围内所有质数在时间复杂度上已经有了很大的提升。

2.欧几里得算法,又名辗转相除法

适用场景:

        求两个数最大公因数

基本步骤:

        1.寻找两个数的较大数。

        2.使用较大数除以较小数,再使用本次计算中的除数除以余数

        3.重复步骤2,当余数为0时,本次计算的除数就是两个数最大公约数。

基本代码:
let a=12,b=18//任意定义两个数,为了方便所以定义的比较小,c为计算过程中的余数
if(b>a)[a,b]=[b,a]//保证a是较大数
while(1){//死循环,因为最大公因数一定有值,最小也是1let c=a%bif(c===0){//当余数为0就跳出循环,否则修改a和b的值,继续循环break}a=bb=c
}
console.log(b)//最后一次计算的除数就是最大公因数:6

相关文章:

算法中常用到的数学知识:埃拉托色尼筛法(获取质数)、欧几里得算法(求两个数最大公因数)

不管是在项目中还是面试时&#xff0c;一定的算法能力都是极其重要的。大多数算法只要有一定的基础&#xff0c;给足够的时间是可以写出来的&#xff0c;然而有一类算法&#xff0c;说难也不难&#xff0c;说简单也不简单&#xff0c;这种算法通常涉及到某种数学知识&#xff0…...

实战OpenCV之人脸识别

基础入门 随着计算机视觉技术和深度学习的发展,人脸识别已经成为一项广泛应用的技术,涵盖了从安全监控、身份验证、智能家居到大型公共安全项目等多个领域。 人脸识别技术通常包括以下几个主要步骤。 图像采集:通过摄像头或其他图像采集设备,捕获包含人脸的图像或视频帧。 …...

图像预处理之图像滤波

目录 图像滤波概览 均值滤波&#xff08;Mean Filter&#xff09; 中值滤波&#xff08;Median Filter&#xff09; 高斯滤波&#xff08;Gaussian Filter&#xff09; 双边滤波&#xff08;Bilateral Filter&#xff09; 方框滤波&#xff08;Box Filter&#xff09; S…...

【通俗理解】隐变量的变分分布探索——从公式到应用

【通俗理解】隐变量的变分分布探索——从公式到应用 关键词提炼 #隐变量 #变分分布 #概率模型 #公式推导 #期望最大化 #机器学习 #变分贝叶斯 #隐马尔可夫模型 第一节&#xff1a;隐变量的变分分布的类比与核心概念【尽可能通俗】 隐变量的变分分布就像是一场“捉迷藏”游戏…...

PyTorch 分布式并行计算

0. Abstract 使用 PyTorch 进行多卡训练, 最简单的是 DataParallel, 仅仅添加一两行代码就可以使模型在多张 GPU 上并行地计算. 但它是比较老的方法, 官方推荐使用新的 Distributed Data Parallel, 更加灵活与强大: 1. Distributed Data Parallel (DDP) 从一个简单的非分布…...

[cg] vulkan external_memory

最近在写硬件编码的代码&#xff0c;渲染器渲染出的RT需要给到编码器做硬编&#xff0c;有两种方法能做。 一是通过 map的方式&#xff0c;把显存里的数据读到cpu&#xff0c;拷贝一份cpu data给编码器&#xff0c;但这种方式会有内存拷贝的开销。所以&#xff0c;我们思考是否…...

如何使用Python代码实现给GPU预加热

如何使用Python代码实现给GPU预加热 一、引言二、使用深度学习框架进行预加热2.1 TensorFlow预加热2.2 PyTorch预加热三、使用CUDA进行预加热四、预加热的效果评估与优化五、结论与展望在高性能计算和深度学习领域,GPU(图形处理器)已经成为不可或缺的加速工具。然而,在实际…...

硬件知识 cadence16.6 原理图输出为pdf 网络名下划线偏移 (ORCAD)

1. cadence原理图输出为PDF网络名下划线偏移 生这种情况的原因 1. 设计的原理图图纸大小比正常的 A4图纸大。 2. 打印为PDF 的时候&#xff0c;打印机的设置有问题。 2.cadence原理图输出为 PDF网络名下划线偏移的情况 可以看到上图&#xff0c;网络名往上漂移。 3. 解决办法 …...

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…...

RecyclerView详解——(四)缓存复用机制

稍微看了下源码和部分文章&#xff0c;在此做个小小的总结 RecyclerView&#xff0c;意思为可回收的view&#xff0c;那么相对于listview&#xff0c;他的缓存复用肯定是一大优化。 具体而言&#xff0c;当一个列表项被移出屏幕后&#xff0c;RecyclerView并不会销毁其视图&a…...

进程 系统调用 中断

进程P通过执行系统调用从键盘接收一个字符的输入&#xff0c;已知此过程中与进程P相关的操作包括&#xff1a; ①将进程P插入就绪队列&#xff1b; ②将进程P插入阻塞队列&#xff1b; ③将字符从键盘控制器读入系统缓冲区&#xff1b; ④启动键盘中断处理程序&#xff1b; …...

演讲回顾丨杭州悦数 CTO 叶小萌:图数据库发展新航向——拥抱 GQL,融合 HTAP,携手 AI

本文为杭州悦数 CTO 叶小萌在“标准智能&#xff1a;新质生产力的原动力”悦数图数据库新产品发布会上的演讲回顾&#xff0c;主题为&#xff1a;《新标准、新期待&#xff1a;展望图数据库发展的关键方向》 各位嘉宾、悦数图数据库的用户以及线上的观众朋友们大家好&#xff0…...

Java安全—JNDI注入RMI服务LDAP服务JDK绕过

前言 上次讲到JNDI注入这个玩意&#xff0c;但是没有细讲&#xff0c;现在就给它详细地讲个明白。 JNDI注入 那什么是JNDI注入呢&#xff0c;JNDI全称为 Java Naming and Directory Interface&#xff08;Java命名和目录接口&#xff09;&#xff0c;是一组应用程序接口&…...

C++:设计模式-单例模式

单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;确保一个类只有一个实例&#xff0c;并且提供全局访问点。实现单例模式的关键是防止类被多次实例化&#xff0c;且能够保证实例的唯一性。常见的实现手法包括懒汉式、饿汉式、线程安全的懒汉式等。…...

Softing工业将OPC UA信息建模集成到边缘应用和安全集成服务器中

Softing工业宣布将OPC UA&#xff08;统一架构&#xff09;信息建模集成到其边缘产品系列及安全集成服务器&#xff08;SIS&#xff09;中&#xff0c;这一技术进步使得在工业物联网&#xff08;IIoT&#xff09;应用中的数据集成、交换与控制更加无缝、有效。 &#xff08;OPC…...

WPF中如何让Textbox显示为一条直线

由于Textbox直接使用是一条直线 设置如下代码 可以让Textbox变为直线输入 <Style TargetType"TextBox"x:Key"UsernameTextBoxStyle"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"{x:Typ…...

VSCode汉化教程【简洁易懂】

我们安装完成后默认是英文界面。 找到插件选项卡&#xff0c;搜索“Chinese”&#xff0c;找到简体&#xff08;更具你的需要&#xff09;&#xff08;Microsoft提供&#xff09;Install。 安装完成后选择Change Language and Restart。...

跨平台多开账号防关联:轻松管理多个账号!

对于跨境电商、独立站以及社媒营销领域&#xff0c;如何高效管理多个账号、确保账号安全是企业面临的重大挑战。那么如何仅用一台电脑就能实现跨平台多开账号呢&#xff1f; 一、为什么需要跨平台多开账号并防关联&#xff1f; 1. 品牌推广&#xff1a;不同平台拥有不同的用户…...

DICOM图像处理:深入解析DICOM彩色图像中的Planar配置及其对像素数据解析处理的实现

引言 在DICOM(Digital Imaging and Communications in Medicine)标准中,彩色图像的存储与显示涉及多个关键属性,其中**Planar Configuration(平面配置)**属性(标签 (0028,0006))尤为重要。当遇到彩色DICOM图像在浏览时被错误地分割为9张小图,而实际应显示为一…...

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点&#xff1a;一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果&#xff1a;加粗&#xff0c;斜体&#x…...

Linux连接网络的三种方式

Linux 连接网络的三种常见方式如下&#xff1a; 桥接模式 原理&#xff1a;虚拟网络接口与物理网络接口或另一个虚拟接口 “桥接”&#xff0c;形成逻辑上的网络交换机&#xff0c;使所有通过该桥接设备的数据包能被转发到桥接组中的所有接口&#xff0c;如同在一个局域网内…...

##继承##

继承的概念 #继承是新模板基于老模板的基础上修改而成&#xff0c;制作新模板时不需要重新开始制作&#xff0c;可以在老模板的基础上进行修改.(如手机版本的换代&#xff0c;软件的版本更新等) #程序也可以继承 继承的格式: class 继承模块&#xff08;被继承模块&#xff…...

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(1)

摘要 近年来,中国宠物食品行业迅速增长,但面临复杂的国际形势和多变的市场环境,因此科学地分析和预测该行业的发展趋势至关重要。本研究通过构建多个机器学习与统计回归模型,量化分析中国宠物食品行业的关键驱动因素,预测未来宠物食品总产值和出口值。 在数据处理部分,…...

uni-app 修改复选框checkbox选中后背景和字体颜色

编写css&#xff08;注意&#xff1a;这个样式必须写在App.vue里&#xff09; /* 复选框 */ /* 复选框-圆角 */ checkbox.checkbox-round .wx-checkbox-input, checkbox.checkbox-round .uni-checkbox-input {border-radius: 100rpx; } /* 复选框-背景颜色 */ checkbox.checkb…...

使用Notepad++工具去除重复行

使用Notepad工具去除重复行 参考链接&#xff1a;https://blog.csdn.net/londa/article/details/108981396 一 、使用正则表达式 1、对文本进行排序&#xff0c;让重复行排在一起 2、使用正则表达式替换&#xff08;注意&#xff09;^(.*?)$\s?^(?.*^\1$) 在替换时选择正…...

基于Springboot+Vue的救灾物资调动系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…...

Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容)

Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容) 目录 Unity 使用 Excel 进行配置管理(读Excel配置表、Excel转保存Txt 文本、读取保存的 Txt 文本配置内容) 一、简单介绍 二、实现原理 三、注意事项 四、案例简单步…...

MySQL中索引全详解

第一部分&#xff1a;什么是索引 索引在数据库中就像书的目录&#xff0c;能够快速定位数据位置&#xff0c;从而提升查询效率。没有索引时&#xff0c;数据库查询需要从头到尾扫描整个表&#xff08;称为全表扫描&#xff09;&#xff0c;这在数据量大时非常耗时。有了索引后&…...

vllm serve的参数大全及其解释

以下是 vllm serve 的常见参数说明以及它们的作用&#xff1a; 1. 基本参数 model_tag 说明&#xff1a;用于指定要加载的模型&#xff0c;可以是 Hugging Face 模型仓库中的模型名称&#xff0c;也可以是本地路径。示例&#xff1a;vllm serve "gpt-neo-2.7B"--co…...

2025职业院校技能大赛信息安全管理与评估(河北省) 任务书

2025职业院校技能大赛信息安全管理与评估--河北省 任务书 模块一网络平台搭建与设备安全防护任务1&#xff1a;网络平台搭建 &#xff08;50分&#xff09;任务2&#xff1a;网络安全设备配置与防护&#xff08;250分&#xff09; 模块二网络安全事件响应、数字取证调查、应用程…...