簡體   English   中英

兩個數之間的最大公約數,返回最大數

[英]Greatest Common Divisor between two numbers, returning the greatest number

我試圖找到兩個數字之間的最大公約數。 我的測試數字是 45 和 81。雖然 gcd 是 9,但它只返回 3,這是一個除數,但它不會繼續返回 9。我很接近,但我想不出辦法讓它返回更高的值數字。

def GCD(num1,num2):
    for i in range(2,num1+1 and num2+1):
        if(num1%i==0 and num2%i==0):
            print("The Greatest Common Denominator between", num1,"and", num2, "is ", end="")
                return i

gcd 是一個內置函數,你可以簡單地做

from fractions import gcd
gcd(45,81)

話雖如此,我仍然會解釋您的錯誤是什么,因為很好理解。 問題是您在找到第一個公分母后返回,這打破了循環,因此您永遠無法測試 9。解決方案是遍歷從最大到最小的范圍,只需使用[::-1]反轉它。 此外, printreturn應該具有相同的縮進級別。

def GCD(num1,num2):
    for i in range(2,num1+1 and num2+1)[::-1]:
        if(num1%i==0 and num2%i==0):
            print("The Greatest Common Denominator between {0} and {1} is {2}".format(num1,num2,i), end="")
            return i

此外,從技術上講%是將變量放入字符串的過時方法,現在推薦使用format()

#包括

使用命名空間標准;

int main() {

int r0, r1,sup2;

cout << "input number one : ";
cin >> r0;

cout << "input number two: ";
cin >> r1;

if (r1 > r0) {

    r1 = r1 + r0;
    r0 = r1 - r0;
    r1 = r1 - r0;
}

while (r1 != 0)
{
    sup2 = r0 % r1;
    r0 = r1;
    r1 = sup2;
}

cout << "\n\nGCD = " << r0 <<endl ;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM