使用Python求解最大公约数

来源:互联网 发布:linux内核内存管理浅析 编辑:程序博客网 时间:2024/06/14 14:27

      使用Python求解两个数的最大公约数的时候用到了以前写过的一个小程序,也就是分解质因式。其实,我写分解质因式程序的时候就是因为发现在实现最大公约数求解的过程中用到了这个功能。

      比较令我开心的是之前学的一点Python集合处理功能居然在这个时候也派上了用场,小程序的完成让人感觉比较舒心。

      代码实现如下:

#!/usr/bin/python

 

from collections import Counter

 

def PrimeNum(num):

      r_value =[]

      for i inrange(2,num+1):

            for jin range(2,i):

                  ifi % j == 0:

                        break

            else:

                  r_value.append(i)

      returnr_value

 

def PrimeFactorSolve(num,prime_list):

      for n inprime_list:

            ifnum % n == 0:

                  return[n,num / n]

 

 

def PrimeDivisor(num):

      num_temp =num

      prime_range= PrimeNum(num)

      ret_value =[]

      while numnot in prime_range:

            factor_list= PrimeFactorSolve(num,prime_range)

            ret_value.append(factor_list[0])

            num =factor_list[1]

      else:

            ret_value.append(num)

      returnCounter(ret_value)

 

def MaxDivisor(num1,num2):

      dict1 =PrimeDivisor(num1)

      dict2 =PrimeDivisor(num2)

      max_divisor= 1

      for key1 indict1:

            ifkey1 in dict2:

                  ifdict1[key1] < dict2[key1]:

                        max_divisor*= (key1 ** dict1[key1])

                  else:

                        max_divisor*= (key1 ** dict2[key1])

      returnmax_divisor

 

print(MaxDivisor(12,18))

print(MaxDivisor(7,2))

print(MaxDivisor(7,13))

print(MaxDivisor(24,56))

print(MaxDivisor(63,81))

      程序的执行结果如下:

E:\WorkSpace\01_编程语言\03_Python\math>python max_divisor.py

6

1

1

8

9

      通过验证,计算结果准确。

 

0 0
原创粉丝点击