三种方法求最大公约数
import time
#连续整数检测
def calculation(a,b):
x = a % b
while (x != 0):
a = b
b = x
x = a % b
return b
#分解质因数
def primefactor(a,b):
i = 2
j = 1
while((i<=a) and (i<=b)):
if(((a % i) == 0) and ((b % i) == 0)):
a = a / i
b = b / i
j = j * i
else:
i = i+ 1
return j
#欧几里得
def euclid(a,b):
if (a < b):
# 保证a大于等于b,便于a % b的运算
temp = a
a = b
b = temp
while (a % b):# 如果余数不为0,就一直进行辗转相除
r = a % b # r为a和b的余数,即r = a mod(b);
a = b
b = r
r = a % b
return b;
if __name__ == '__main__':
starttime = time.clock()
print(starttime)
a = input("请输入第一个数字a:")
b = input("请输入第二个数字b:")
#结果
result = euclid(a,b) #primefactor(a,b) #calculation(a,b)
endtime1 = time.clock()
print("最大公约数为:%d"%result)
print("运行时间为:%s"%(endtime1-starttime))
starttime1 = time.clock()
result = primefactor(a,b) #calculation(a,b)
endtime2 = time.clock()
print("运行时间为:%s"%(endtime2 - starttime))
starttime2 = time.clock()
result = calculation(a,b)
endtime3 = time.clock()
print("运行时间为:%s"%(endtime3 - starttime))
print(endtime1)
print(endtime2)
print(endtime3)