Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. # Fonctions et variables globales ---------------------------------------------
  2. def nombrePremiers(a):
  3. lst=[2,3]
  4. x = lst[len(lst)-1]
  5. i=1#on commence a partir de 3
  6. while lst[i]<=a:#tant que le dernier nombre de la liste est inferieur ou egal au nombre demandé
  7. x+=2#futur candidat à être un nombre impair
  8. k=1
  9. while x%lst[k]!=0:#on teste si le candidat est divisible par les nombre premiers precedent
  10. k+=1#pour passer au nombre premier suivant
  11. if k==len(lst) or lst[k]**2>x:#si k à fait toute la liste ou que un elem de la liste **2 est superieur au candidat
  12. lst.append(x)#on ajoute le candidat à la liste
  13. i+=1#on se place sur ce nombre pour la suite
  14. break
  15. return lst
  16.  
  17.  
  18. def expoFacteur(x,p):
  19. e=0
  20. while x%p==0:#tant que x divisible par p
  21. x//=p#on divise x par p
  22. e+=1#sert à calculer l'exposant
  23. return x,e
  24.  
  25. def decompose():
  26. liste,fac,exp=[],[],[]
  27. while True:#demande des nombres a ajouter a la liste
  28. entree= input("Entier ou stop")
  29. if entree=="stop":
  30. break
  31. liste.append(int(entree))#on ajoute les nombres à la liste
  32. prems=[2,3]
  33. for x in liste:#prend les valeurs de la liste position par position
  34. r=x
  35. p=2
  36. facx=[]
  37. expx=[]
  38. i=0
  39. while r!=1:#tant que le nombre de la liste n'est pas egale a 1
  40. r,e=expoFacteur(r,p)#cf au dessus
  41. if e!=0:#si l'exposant != 0
  42. facx.append(p)
  43. expx.append(e)
  44. i+=1
  45. if i==len(prems):
  46. prems=premierSuivant(prems)
  47. p = prems[i]
  48. if r==x and p**2>x:
  49. break
  50. fac.append(facx)
  51. exp.append(expx)
  52. print(x," = ",end='')
  53. formateDecomp(facx,expx)
  54. print("Nombres premiers utilisé",prems)
  55.  
  56.  
  57. def formateDecomp(fac,exp):
  58. if fac==[]:#si il n'y a pas de nombre dans la liste le nombre est premier
  59. print("est premier")
  60. else:
  61. for i in range(len(fac)-1):#genere l'affichage jusqua l'avant dernier
  62. print(fac[i],'^',exp[i],'*',end=' ')
  63. print(fac[len(fac)-1],'^',exp[len(fac)-1])#rajoute la partie manquante de l'affichage(sous idle '\b' indispo)
  64.  
  65. def premierSuivant(prems):
  66. x = prems[len(prems)-1]
  67. while True:
  68. x+=2
  69. k=1
  70. while x%prems[k]!=0:
  71. k+=1
  72. if k==len(prems) or prems[k]**2>x:
  73. prems.append(x)
  74. return prems
  75.  
  76. if __name__ == '__main__':
  77. decompose()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement