最小公倍数和最大公约数怎么求

img


没有思路,怎样循环赋值啊,希望可以用低级一点的方法做,刚刚开始学

while a/b:
a,b=b,a/b

循环赋值的办法就是以t!=0为循环的条件,循环体就是交换a和b,b和t的值,然后给t重新赋值为a%b的值即可,代码如下:

参考链接:
https://jingyan.baidu.com/article/9f63fb91a49aa489400f0eb9.html
__name__ == '__main__' 到底是什么意思_车子 chezi的博客-CSDN博客_name==main



#求最大公约数
def GCD(a,b):
    
    #https://jingyan.baidu.com/article/9f63fb91a49aa489400f0eb9.html
    t=a%b
    while t !=0:       
        a=b
        b=t
        t = a%b
    
    return b

#求最小公倍数
def LCM(a,b):
        
    return a*b/GCD(a,b)


#https://blog.csdn.net/longintchar/article/details/87120496
if __name__ == '__main__':
        
    a = int(input("请输入第一个整数:"))
    b = int(input("请输入第二个整数:"))
    print(str(a)+"与"+str(b)+"的最大公约数是:"+str(GCD(a,b))+",最小公倍数是:"+str(LCM(a,b)))

img

img


#include<iostream>

using namespace std;

int main(){
    int x;
    int y;
    int r;
    int b;
    cin>>x>>y;
    int x1 = x;
    int y1 = y;
    if(x>y){
        int t = x%y;
    
        while(t!=0){
            x = y;
            y = t;
            t = x%y; 
    
        }
        if(t==0){
           r = y;
        }
        
        b = x1*y1/r;

    }else{
        int t = y%x;
        while(t!=0){
            y = x;
            x = t;
            t = y%x; 
    
        }
        if(t==0){
           r = x;
        }
        
        b = x1*y1/r;
    }
    cout<<"最大公因数是:"<<r<<endl;
    cout<<"最小公倍数是:"<<b<<endl;
     
} 

有用的话记得采纳一下,谢谢


# 最大公约数
def gcd(a: int, b: int):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)


# 最小公倍数    lowest common multiple(以最大公约数的结果为基础)
def lcm(a: int, b: int):
    return int((a * b) / gcd(a, b))


a = int(input())
b = int(input())
print(f'最大公约数为{gcd(a, b)}, 最小公倍数为{lcm(a, b)}')