1,穷举法:判断两数大小,i 从[smaller,1]循环,当i同时可以被两数除尽时,循环停止返回i,i就是两数的最大公约数 如代码中的方法f1(),
2.辗转相除法:判断两数大小.,用较大的数除以较小的数,第一次时若能除尽,返回较小的数,否则,把较小的数的值赋给较大的数.把余数的值赋给较小的数,继续相除,如此循环,直至可以除尽为止,返回较大的数f4()
3.相减法:判断两数大小.,用较大的减较小的数,第一次时若差为0,返回较小的数,否则,把较小的数的值赋给较大的数.把差的值赋给较小的数,继续相减,如此循环,直至差为0为止,返回较大的数f3()
def f1(x, y):
global result
if x > y:
smaller = y
else:
smaller = x
for i in range(1, smaller+1 )[::-1]:
if x % i == 0 and y % i == 0:
result = i
break
return result
def f2(x,y):
if x>y:
bigger = x
smaller=y
else :
bigger = y
smaller = x
r = 1
while(r!=0):
r = bigger - smaller
bigger = smaller
smaller = r
return bigger
def f3(x,y):
if x>y:
bigger = x
smaller=y
else :
bigger = y
smaller = x
r = 1
while(r!=0):
r = bigger %smaller
bigger = smaller
smaller = r
return bigger
x = int(input("输入第一个数字: "))
y = int(input("输入第二个数字: "))
print(x, "和", y, "的最大公约数为", f1(x, y),f2(x, y),f3(x,y))