Page 1 sur 1

Décomposition en facteurs premiers Graph90+e

Message non luPosté: 09 Fév 2023, 12:55
de ggauny@live.fr
ifact1.py
(168 Octets) Téléchargé 48 fois
Bonjour à tous,

Voilà un programme de factorisation de nombres entiers. J'aurais aimé avoir la présentation du résultat comme "ifactors" de Monsieur Parisse mais je n'y parviens pas, déjà sur la WP 34s et autres ordipoches. Ma foi...
Alors le programme indique le nombre premier et l'exposant, par exemple [2, 3] signifie 2^3.
Faire : dec(n) EXE.

Par exemple ma Mère est née en 1914, dec(1914) donne [[2,1], [3,1],[11,1],[29,1]], on lira 2*3*11*29. J'aurais voulu mettre le signe exposant mais je n'y arrive pas.

Re: Décomposition en facteurs premiers Graph90+e

Message non luPosté: 09 Fév 2023, 20:00
de ~ThinkingSpace~
en gros tu veux afficher une chaîne de caractères bien présentée ? tu peux juste afficher ou renvoyer un string
Code: Tout sélectionner
def dec(n):
  L = []
  i = 2
  while n > 1:
    kt = 0
    while n % i == 0:
      n = n / i
      kt += 1
    if kt != 0:
      L.append([i, kt])
    i += 1
  s = ""
  for j in L:
    if j[1] == 1:
      s += str(j[0]) + "*"
    else:
      s += str(j[0]) + "^" + str(j[1]) + "*"
  return(s[:-1])

Ici je supprime le dernier caractère avant de renvoyer, sinon on aurait un signe * inutile.

Re: Décomposition en facteurs premiers Graph90+e

Message non luPosté: 09 Fév 2023, 20:39
de ggauny@live.fr
Bonsoir Monsieur,

D'abord merci beaucoup et ensuite bravo ! Je ne comprends pas bien les instructions str, je suis vraiment néophyte et j'apprends doucement.

Merci encore et bonne soirée.
:)

Re: Décomposition en facteurs premiers Graph90+e

Message non luPosté: 10 Fév 2023, 13:40
de Bisam
@ggauny : str(truc) transforme truc (ici des nombres entiers) en une chaîne de caractères.

Par ailleurs, il y a une petite erreur : il faudrait faire une division entière à la ligne 7 n = n // i
Enfin return est une instruction et non une fonction. Les parenthèses autour de s[:-1] sont inutiles.

Pour éviter les "*" en trop, et séparer les différents facteurs, on peut remplacer les lignes 12 à 18 par :
Code: Tout sélectionner
return " * ".join(str(p) + ("^" + str(e) if e != 1 else "") for (p,e) in L)

Re: Décomposition en facteurs premiers Graph90+e

Message non luPosté: 10 Fév 2023, 17:37
de ggauny@live.fr
Merci Bisam,

Eh ben dites-donc pour programmer en python, j'ai encore du chemin à faire !!!

(PS : j'ai mis != à la place de e==1 car sinon le programme me donnerait, par exemple 2^1 * 3^1 au lieu de 2 *3).

Re: Décomposition en facteurs premiers Graph90+e

Message non luPosté: 11 Fév 2023, 18:32
de Bisam
Effectivement, petite faute de frappe de ma part. J'ai corrigé ci-dessus.