计算最大公约数 GCD (Greatest Common Divisor)和最小公倍数 LCM (Least Common Multiple)


最大公约数GCD 也叫做Greatest Common Factor (最大公因数).
以下是Java code,说成C++也没差。

from Introduction to Java Programming and stackoverflow:

1 计算 GCD

方法 1

public static int gcd(int n1, int n2)  {
    int gcd = 1; // Initial gcd is 1
    int k = 2; // Possible gcd
    while (k <= n1 && k <= n2)  {
        if (n1 % k == 0 && n2 % k == 0)
            gcd = k; // Update gcd
        k++;
    }
    return gcd;  // Return gcd
}

方法 2

public static int gcd(int a, int b)
{
    while (b != 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

方法 3

public static int gcd(int a, int b)
{
    /* additional iteration if (a < b) */
    for (int t = 0; (t = b) != 0; a = t)
        b = a % b;
    return a;
}

2 计算 LCM

方法 1

public static int lcm(int a, int b)
{
    int num1, num2;
    if (a > b)
    {
        num1 = a; 
        num2 = b;
    }
    else
    {
        num1 = b; 
        num2 = a;
    }

    for (int i = 1; i < num2; i++)
    {
        if ((num1 * i) % num2 == 0)
        {
            return i * num1;
        }
    }
    return num1 * num2;
}

方法 2

public static int lcm(int a, int b)
{
	return (a / gcd(a, b)) * b;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值