求最大公约数(两种算法)

本文详细介绍了如何使用C++实现欧几里得算法来计算两个整数的最大公约数,以及连续整数检测算法,该算法基于最大公约数的概念,通过循环找到同时整除两个数的最大整数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法一

欧几里得算法

输入:两个不全是负数的整数

输出:这两个数的最大公约数

C++语言描述

判断连个数的大小

if(m>=n){

        while(m%n!=0){

                int temp = m%n;

                m = n;

                n = temp;

        }

        std::cout << n << std::endl;

}

else{

        while(n%m!=0){

                int temp = n%m;

                n = m;

                m = temp;

        }

        std::cout << m << std::endl;

}

自然语言描述(当m > n 时)

用较大的数除以较小的数取余,若得到的结果为0,那么就返回较小的数作为最大公约数。反之将上一步中的除数作为被除数,将他们的余数赋值给除数,循环这样做,直至得到的余数为0,最后的除数就是最大公约数

算法二

连续整数检测算法

C++语言描述

t  = min(m,n);

while(m%t!=0 && m%t!=0){

        if(m%t==0&& n%t==0){

                return t;

        }

        else t--;

}

自然语言描述

基于最大公约数的定义:同时整除两个整数的最大整数

显然不会大于两数较小者,t = min(m,n);

然后循环让 m%t 和 n%t 若两个同时取余为零,说明t是它两最大公约数,反之t-1循环 m%t 和 n%t

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡灵感码头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值