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

求两个正整数最大公约数的三种算法

1.欧几里德算法:

gcd(m,n)

其中m>=n,其递归定义为:

gcd(m,n)=   m                           , n=0

                    gcd(n,m mod n)    ,n>0

1,欧几里得算法描述方法一

自然语言描述:

第一步:如果n=0,返回m的值作为结果,同时过程结束;否则,进入第二步

第二步:用n去除m,将余数赋给r。

第三步:将n的值赋给m,将r的值赋给n,返回第一步

2,欧几里得算法描述方法二

伪代码描述

算法,Euclid(m,n)

//使用欧几里得算法计算gcd(m,n)

//输入:两个不全为零的非负整数m,n。

//输出:m,n的最大公约数

        while n <>o do

        {r<- m mod n

        m<-n

        n<-r}

     return  m

3,欧几里得算法描述三

C语言描述

算法Euclide(m,n)

//使用欧几里得算法计算gcd(m,n)

//输入:两个不全为零的非负整数m ,n。

int Euclid(int m,int n)
  {int r;
  while(n!=0)
  {
    r=m%n;
    m=n;
    n=r;
  }
return m;
}

2,连续整数检测算法

算法思想:基于最大公约数的定义:同时整除两个整数的最大整数。

显然,不会大于两个数的最小值,所以令t = min(m,n)

用t除以m,n,若除尽,t即最大公约数;否则令:t=t-1,继续尝试

自然语言进行描述:

第一步:将min{m,n}的值赋给t。

第二步:m除以 t,如果余数为0,进入第三步;否则,进入第四步

第三步:n除以 t,如果余数为0,返回t 值作为结果;否则,进入第四步

第四步:将t 值减1,返回第二步

3.埃拉托色尼“筛”算法:

算法思想:

**首先初始化一个2~n的连续序列,作候选素数。

**第一个循环消去2的倍数;

**然后,指向序列的下一个数字3,消去其倍数

**接下来指向5,消去其倍数

**按此方法不断做下去,直到序列中没有可消元素

例如:gcd(60,24)=

        60 = 2*2*3*5

        24=2*2*2*3

        找出公共的因子:所以等于2*2*3=12

相关文章:

  • Linux下 <用户名> is not in the sudoers file
  • 《晶体管电路设计》 第三章 增强输出的电路
  • 【Python项目】基于Python的Web漏洞挖掘系统
  • 超级详细,知识图谱系统的理论详解+部署过程
  • 全局错误处理如何与Vue Router集成?
  • JavaScript中的symbol类型的意义和使用
  • ssm-day06 ssm整合
  • SpringBoot 项目配置动态数据源
  • 【C++篇】树影摇曳,旋转无声:探寻AVL树的平衡之道
  • Apache Logic4j 库反序列化漏洞复现与深度剖析
  • 【蓝桥杯集训·每日一题2025】 AcWing 6135. 奶牛体检 python
  • HarmonyOS学习第3天: 环境搭建开启鸿蒙开发新世界
  • java练习(35)
  • 如何用好 DeepSeek 工具:入门指南
  • 【CSP/信奥赛通关课(一):C++语法基础】
  • PrimeTime:工具简介
  • 算法模板(二分法开区间模板,二分法闭区间模板)
  • 【华三】STP的角色选举(一文讲透)
  • 市场趋势中突破确认的多维度判断方法
  • 【简历优化】性能调优 — 编程性能调优篇
  • 阿里云的wordpress站点地址写错/最新搜索关键词
  • java做网站用什么框架/网站怎样被百度收录
  • 网站 搭建 公司/免费入驻的跨境电商平台
  • 凡科互动修改器/搜索引擎优化面对哪些困境
  • 北京编程培训学校哪个好/关键词seo优化公司
  • 重庆网站推广免费软件/惠州seo关键字优化