【编程数学基础】求最大公约数及最小公倍数

目录

辗转相除法求最大公约数(代码默认输入的两个数大于0)

(1)C++版本

(2)java函数版本


辗转相除法求最大公约数(代码默认输入的两个数大于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]);
    }
}

 

>.<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值