Advertisement
AntonioVillanueva

Calculo de MCD de varios numeros

Jul 25th, 2019
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.02 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8
  3. """
  4. Antonio Villanueva Segura
  5. Calculo de MCD de varios numeros
  6. """
  7. #*******************************************************************************
  8. def esPrimo(num):
  9.     """test si es un numero primo"""
  10.     if num < 1:
  11.         return False
  12.     elif num == 2:
  13.         return True
  14.     else:
  15.         for i in range(2, num):
  16.             if num % i == 0:
  17.                 return False
  18.     return True  
  19.    
  20. #*******************************************************************************     
  21. def factores_primos (num):
  22.     """crea factorizacion de n. primos """
  23.     factores=[] #factores de este num
  24.     x=1
  25.     while (x <=num+1):
  26.         if esPrimo(x) and num%x==0:        
  27.             factores.append(x)
  28.             num=num/x
  29.             x=1
  30.         x+=1
  31.    
  32.     return factores
  33. #*******************************************************************************   
  34. def mcdv(*num):
  35.     """calculo mcd de argumentos variables """
  36.     existe =True
  37.     factores=[]#Lista de varias dimensiones segun numeros
  38.     mcd=[]#Máximo común divisor a todos los numeros
  39.    
  40.     #Crea una lista con listas de los factores de cada numero
  41.     for n in num:      
  42.         factores.append(factores_primos(n))
  43.    
  44.     for f in factores[0]:#recorre la 1era. factorizacion primer numero.
  45.        
  46.         #Existe f en todas las factorizaciones de los numeros ?
  47.         for index in range(len(num)):
  48.             if f in factores[index]:#Existe f en todas las factorizaciones
  49.                 existe=existe and True
  50.             else:
  51.                 existe=False
  52.         #Si existe se anade a mcd y lo eliminamos de todas las listas s    
  53.         if existe:
  54.             mcd.append(f)#Se anade el nuevo factor comun
  55.            
  56.             for n in range(1,len(num)):#y se borra de todos
  57.                 factores[n].remove(f)
  58.        
  59.         existe=True #Reset del Flag
  60.        
  61.        
  62.     return mcd 
  63.  
  64. #*******************************************************************************
  65.  
  66. """ Bucle principal y zona de Tests"""         
  67.  
  68. #Calculo MCD de tres numeros
  69. print (mcdv(24,36,40)) #2*2=4
  70. print (mcdv(65,45,30)) #5
  71. print (mcdv(12,24,90)) #2*3
  72. print (mcdv(2,3,5))#1
  73.  
  74. #Calculo MCD de 2 numeros
  75. print (mcdv(48,60))#2*2*3=12
  76.  
  77. #Calculo MCD de 1 un numero
  78. print (mcdv(48))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement