>백엔드 개발 >파이썬 튜토리얼 >Python으로 구현된 최대 공약수를 풀기 위한 알고리즘의 예

Python으로 구현된 최대 공약수를 풀기 위한 알고리즘의 예

不言
不言원래의
2018-05-03 13:53:002410검색

이 글에서는 Python으로 구현된 최대 공약수를 푸는 알고리즘을 주로 소개하며, Python 수학 연산과 관련된 조작 능력이 필요한 친구들이 참고할 수 있습니다.

이 글의 예에서는 구현된 최대 공약수를 푸는 알고리즘이 설명되어 있습니다. 파이썬에서. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

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):
         if i % j == 0:
            break
      else:
         r_value.append(i)
   return r_value
def PrimeFactorSolve(num,prime_list):
   for n inprime_list:
      if num % n == 0:
         return [n,num / n]
def Primepisor(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)
   return Counter(ret_value)
def Maxpisor(num1,num2):
   dict1 =Primepisor(num1)
   dict2 =Primepisor(num2)
   max_pisor= 1
   for key1 indict1:
      if key1 in dict2:
         if dict1[key1] < dict2[key1]:
            max_pisor*= (key1 ** dict1[key1])
         else:
            max_pisor*= (key1 ** dict2[key1])
   return max_pisor
print(Maxpisor(12,18))
print(Maxpisor(7,2))
print(Maxpisor(7,13))
print(Maxpisor(24,56))
print(Maxpisor(63,81))

프로그램 실행 결과는 다음과 같습니다.

E:WorkSpace

위 내용은 Python으로 구현된 최대 공약수를 풀기 위한 알고리즘의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.