Advertisement
Guest User

Polydivisibles por pablo bilbao

a guest
Sep 2nd, 2015
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.25 KB | None | 0 0
  1. #Codigo para encontrar todos los números Polydivisibles
  2. #Por Pablo Bilbao
  3. import math
  4. def polydivisible():
  5.    
  6.     j=1
  7.     a=0 #Introduciendo los digitos iniciales.
  8.     b=0
  9.     c=0
  10.     d=0
  11.     e=0
  12.     f=0
  13.     g=0
  14.     h=0
  15.     x=0 #Una variable para que los while loops este constantemente ejecutandose.
  16.    
  17.     while x == (0): #Loop primario que se encarga de iniciar el Loop secundario despues de cambiar de numero.
  18.         while x == (0): #Loop secundario
  19.             number = j*math.pow(10,8)+a*math.pow(10,7)+b*math.pow(10,6)+c*math.pow(10,5)+d*math.pow(10,4)+e*math.pow(10,3)+f*math.pow(10,2)+g*10+h
  20.             #Multiplicando cada digito por la potencia de diez adecuada se consigue ocupe su lugar en el número.
  21.             if(math.fmod(j,1)==0): #Empieza a comprobar la divisibilidad observando a ver si hay resto.
  22.                 if(math.fmod((j*10+a),2)==0): #Dígito a dígito.
  23.                     if(math.fmod((j*math.pow(10,2)+a*10+b),3)==0):
  24.                         if(math.fmod((j*math.pow(10,3)+a*math.pow(10,2)+b*10+c),4)==0):
  25.                             if(math.fmod((j*math.pow(10,4)+a*math.pow(10,3)+b*math.pow(10,2)+c*10+d),5)==0):
  26.                                 if(math.fmod((j*math.pow(10,5)+a*math.pow(10,4)+b*math.pow(10,3)+c*math.pow(10,3)+d*10+e),6)==0):
  27.                                     if(math.fmod((j*math.pow(10,6)+a*math.pow(10,5)+b*math.pow(10,4)+c*math.pow(10,3)+d*math.pow(10,2)+e*10+f),7)==0):
  28.                                         if(math.fmod((j*math.pow(10,7)+a*math.pow(10,6)+b*math.pow(10,5)+c*math.pow(10,4)+d*math.pow(10,3)+e*math.pow(10,2)+f*10+g),8)==0):
  29.                                             if(math.fmod(number,9)==0): #Así hasta el numero final sea divisible entre nueve
  30.                                                 print str(number) #Si se han cumplido todos los requisitos de divisibilidad,
  31.                                                 break             #el número se muestra en el terminal y sale del Loop Secundario.
  32.                                             else:                 #Para que pueda empezar el proceso de suma.
  33.                                                 break
  34.                                         else:
  35.                                             break #si el resto no es cero entonces se sale del Loop secundario
  36.                                     else:         #y se ejecuta la suma
  37.                                         break
  38.                                 else:
  39.                                     break
  40.                             else:
  41.                                 break
  42.                         else:
  43.                             break
  44.                     else:
  45.                         break
  46.                 else:
  47.                     break
  48.                    
  49.                              
  50.         h+=1 #Despues de comprobar cada número se le suma uno para empezar con el siguiente.
  51.         if (h==10): #Cuando el primer digito llega a diez,
  52.             g+=1    #el segundo crece en una unidad.
  53.             h=0     #Y el primero vuelve a cero.
  54.             if(g==10): #Así con cada dígíto.
  55.                 f+=1
  56.                 g=0
  57.                 if(f==10): #Cuando no hace falta sumar más el Loop principal vuelve a empezar
  58.                     d+=1   #y inicia el Loop secundario que es el sistema de comprobación de
  59.                     f=0    #multiplos.
  60.                     if(d==10):
  61.                         e+=1
  62.                         d=0
  63.                         if(e==10):
  64.                             c+=1    #Esto último pasa a lo largo de toda esta cadena de Ifs.
  65.                             e=0
  66.                             if(c==10):
  67.                                 b+=1
  68.                                 c=0
  69.                                 if(b==10):
  70.                                     a+=1
  71.                                     b=0
  72.                                     if(a==10):
  73.                                         j+=1
  74.                                         a=0
  75.                                         if(j==10): #Si el último digito llega a Diez entonces se para el programa
  76.                                             print "se acabó, nó puedo comprobar números más grandes de 999.999.999"
  77.                                             break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement