Skip to main content
 首页 » 编程设计

python之找出最大公约数

2025年05月04日14mate10pro

def gei(a, b): 
     ''' 
     a, b: only positive integers! If you don't, we will make you. Max 1337 
     For extracting the juice of the numbers in the form of a common divider 
     ''' 
     #Not Ruby, no to_i, but int() 
     smallest = int(abs(min(a, b))) 
     biggest = int(abs(max(a, b))) 
     print "You inputed: ", smallest, " and ", biggest, " their order doesn't matter." 
     print "Do you want to see guess numbers? Type 'yes', if you do! " 
     selection = raw_input() 
     print 
     print 
     #To evade infinite loops and too big numbers, we use count. 
     count = 0 
     ans = smallest 
     truth = str(selection) == str('yes') 
     def condition(ans, base): 
         ans1 = base % ans == 0 
         return ans1 
     while condition(ans, biggest) == False or condition(ans, smallest) == False: 
         ans -= 1 
         count += 1 
     if count >= 1337: 
         break 
     elif truth == True: 
         print  ans 
     if truth == True: 
         print 
         print 
     print  "After weeks of calculation, here is your greater common divider: " 
     return ans 

是的,8 年级的信息学作业是提取常见的更大的分隔符。我在想,也许你们知道我怎样才能让它不那么麻烦?如何避免在内部使用定义并命名这么多变量?

请您参考如下方法:

import fractions 
print fractions.gcd(4,8) 
>>> 4 

不过你也可以看看源码:

def gcd(a, b): 
    """Calculate the Greatest Common Divisor of a and b. 
 
    Unless b==0, the result will have the same sign as b (so that when 
    b is divided by it, the result comes out positive). 
    """ 
    while b: 
        a, b = b, a%b 
    return a 

引用:http://en.wikipedia.org/wiki/Euclidean_algorithm