求最大公约数(辗转相除法)

求最大公约数(辗转相除法)最大公约数 GreatestComm 指两个或多个整数共有约数中最大的一个 也称最大公因数 最大公因子 a b 的最大公约数记为 a b 同样的 a b c 的最大公约数记为 a b c 多个整数的最大公约数也有同样的记号 求最大公约数有多种方法 常见的有质因数分解法 短除法 辗转相除法 更相减损法 与最大公约数相对应的概念是最小公倍数 a b 的最小

最大公约数(Greatest Common Divisor)指两个或多个整数共有约数中最大的一个。

也称最大公因数、最大公因子,a, b的最大公约数记为(a,b),同样的,a,b,c的最大 公约数记为(a,b,c),多个 整数的最大公约数也有同样的记号。求最大公约数有多种 方法,常见的有 质因数分解法、 短除法、 辗转相除法、 更相减损法。与最大公约数相对应的概念是 最小公倍数,a,b的 最小公倍数记为[a,b]。

再来介绍一下辗转相除法:

因此可以通过这个原理来求出最大公约数: 

#include 
  
    #include 
   
     using namespace std; int fun(int m,int n){ int rem; //余数,当余数为0的时候,最后的m即为最大公约数 //先用较小的数对较大的数取余,再用余数对较小的数求余,直到余数为零 while(n > 0){ rem = m % n; m = n; n = rem; } return m; //将结果返回 } int main(){ int n,m; cin>>m>>n; cout<<"m和n的最大公约数为:"< 
     
    
  

因为到余数为零结束,所以还可以将程序简化一下用递归来求:

int fun(int m,int n){ if(n==0) return m; return fun(n,m%n); }

再简化一下,用一行代码来求:

int gcd(int m, int n) { return n ? gcd(n, m % n) : m; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198156.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:40
下一篇 2026年3月26日 下午3:40


相关推荐

  • MySql数据库命令大全:数据库操作命令,表操作命令,修改表结构命令,数据操作命令,数据查询操作命令

    MySql数据库命令大全:数据库操作命令,表操作命令,修改表结构命令,数据操作命令,数据查询操作命令数据库操作命令表操作命令修改表结构命令数据操作命令数据查询操作命令

    2026年3月19日
    1
  • html中滚动条的代码是什么?如何设置html滚动条?

    html中滚动条的代码是什么?如何设置html滚动条?本篇文章主要介绍了关于 html 中的滚动条的代码 还有关于 html 滚动条代码 marquee 标签属性的用法 具体的让我们一起来看这篇文章吧首先我们介绍 html 中的滚动条代码 今天我们介绍这个 html 滚动条标签是 marquee marquee 标签 它是成对出现的标签 首标签 marquee 和尾标签 marquee 之间的内容就是滚动内容 marquee 标签的属性主要有 behavior bgcolor direction width height marquee marquee

    2025年7月7日
    5
  • 安卓ExpandableListView的详细使用教程(附代码解析过程)

    安卓ExpandableListView的详细使用教程(附代码解析过程)ExpandableListView又称可扩展的ListView,它可以实现点击父项展开子项的效果,本文实现了一个比较精美的ExpandableListView。

    2022年6月30日
    19
  • django配置文件详解_django 日志配置和使用

    django配置文件详解_django 日志配置和使用前言Django的配置文件settings.py用于配置整个网站的环境和功能,核心配置必须有项目路径、密钥配置、域名访问权限、App列表、中间件、资源文件、模板配置、数据库的连接方式基本配置信息

    2022年7月31日
    8
  • ES5和ES6区别浅析

    ES5和ES6区别浅析前言 JavaScript 一种动态类型 弱类型 基于原型的客户端脚本语言 用来给 HTML 网页增加动态功能 具体概念不做过多的说明 这里说一下 JavaScript 的主要组成 组成一 ECMAScript 核心 ECMAScript 是 JS 的核心 它规定了语言的组成部分 语法 类型 语句 关键字 保留字 操作符 对象

    2026年3月17日
    2
  • RocketMQ原理解析

    RocketMQ原理解析1 NameServer 名称服务 NameServer 是没有状态的 即 NameServer 中的 Broker 和 topic 等状态信息 通过其他角色上报获取 都是保存在内存中的 不会持久化存储 可通过配置实现 集群可以横向扩展 主要功能如下 a 接收 Broker master 和 slave 启动时的注册路由信息 b 为 producer 和 consumer 提供路由服务 即通过 topic 名字获取所

    2025年6月26日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号