求最大公约数
感想
虽然伪代码看起来是一样的,但实际一开始写出来的很复杂,后来发现可以通过数学上的办法进行简化。
算法的本质是用计算机表达计算的过程,精简的程序显然也是数学的学习。
辗转相除法
先将两个整数a与b进行相除
如果余数为0
则b为两数的最大公约数
如果不等于0
则将b赋值给a
将余数赋值给b
在对a与b进行相除
直到余数为0时终止(a%b==0)
则b为最大公约数。
来源地址
伪代码
read num1
read num2
set remainder=num1%num2
while (remainder!=0)
set num1 to num2
set num2 to remainder
set remainder=num1%num2
write remainder
Python实现
m=int(input("输入一个数"))
n=int(input("输入一个数"))
def a(m,n):
r = m % n
while r != 0:
m = n
n = r
r = m % n
return n
print("最大公约数是",a(m,n))