目录
辗转相除法求最大公约数(代码默认输入的两个数大于0)
【注意!】如果两个数的最大公约数能求出来 那么它的最小公倍数等于这两个数的乘积除以最大公约数
【注释】注释很详细 看三遍 再敲三遍 就会啦!
(1)C++版本
// Created by Liu Xianmeng on 2022/11/2
#include <bits/stdc++.h>
using namespace std;
//typedef long long int ll;
int main() {
int bigger; // 两数中较大者
int smaller; // 两数中较小者
cin>>bigger>>smaller;
int product = bigger*smaller; // 两数的乘积(用于求两数的最小公倍数)
int remainder; // 中间运算取余数
do{
remainder = bigger%smaller; // 如果第一次取余得到的结果是0 那说明这两个数的最大公约数就是smaller
bigger = smaller; // 更新循环值 最终返回的最大公约数就是bigger
smaller = remainder; // 更新循环值
}while(remainder != 0);
cout<<"最大公约数 = "<<bigger<<endl;
cout<<"最小公倍数 = "<<product/bigger<<endl; // 最大公约数和最小公倍数的乘积等于两数的乘积(数学规律)
return 0;
}
(2)java函数版本
package jin.test;
/**
@author Liu Xianmeng
@createTime 2022/11/3 7:39
@instruction
*/
@SuppressWarnings({"all"})
public class LCM {
/**
* 此函数默认输入的两个数能求出最大公约数
* @param bigger 两个数中较大的一个
* @param smaller 两个数中较小的一个
* @return rst 返回存储的结果 rst[0]为最大公约数 rst[1]为最小公倍数
*/
int[] getLCMAndGCD(int bigger, int smaller){
// 用于存储返回的结果 rst[0]为最大公约数 rst[1]为最小公倍数
int rst[] = new int[2];
int product = bigger*smaller; // 两数的乘积(用于求两数的最小公倍数)
int remainder; // 中间运算取余数
do{
remainder = bigger%smaller; // 如果第一次取余得到的结果是0 那说明这两个数的最大公约数就是smaller
bigger = smaller; // 更新循环值 最终返回的最大公约数就是bigger
smaller = remainder; // 更新循环值
}while(remainder != 0);
rst[0] = bigger; // 存储最大公约数
rst[1] = product/bigger; // 存储最小公倍数 最大公约数和最小公倍数的乘积等于两数的乘积(数学规律)
return rst; // 返回结果
}
public static void main(String[] args) {
int big = 12;
int sma = 3;
int rst[] = new LCM().getLCMAndGCD(big, sma);
System.out.println(big+"和"+sma+"的最大公约数为:" + rst[0]);
System.out.println(big+"和"+sma+"的最小公倍数为:" + rst[1]);
}
}
>.<