[英]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]
反轉它。 此外, print
和return
應該具有相同的縮進級別。
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.