Maison >développement back-end >Tutoriel Python >Exemple d'algorithme de résolution du plus grand diviseur commun implémenté en Python

Exemple d'algorithme de résolution du plus grand diviseur commun implémenté en Python

不言
不言original
2018-05-03 13:53:002455parcourir

Cet article présente principalement l'algorithme de résolution du plus grand diviseur commun implémenté en Python, impliquant des compétences opérationnelles liées aux opérations mathématiques Python. Les amis dans le besoin peuvent s'y référer

Cet article décrit l'algorithme de résolution du plus grand diviseur commun. diviseur commun implémenté en Python. Partagez-le avec tout le monde pour référence, les détails sont les suivants :

Lorsque vous utilisez Python pour trouver le plus grand diviseur commun de deux nombres, la décomposition des facteurs premiers introduite précédemment est utilisée. En fait, lorsque j’ai écrit le programme de factorisation première, c’est parce que j’ai découvert que cette fonction était utilisée dans le processus de résolution du plus grand diviseur commun.

Ce qui me rend heureux, c'est que la fonction de traitement de collection Python que j'ai apprise auparavant est réellement utile en ce moment. L'achèvement du petit programme permet aux gens de se sentir plus à l'aise.

Le code est implémenté comme suit :

#!/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))

Le résultat de l'exécution du programme est le suivant :

E : Espace de travail

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn