TypeError: '<=' not supported between instances of 'int' and 'str'
print("quelle est le nombre que vous voulez décomposer")
nombre = input()
diviseur = 2
print("facteur premier de" ,nombre ,"est")
while diviseur<=nombre:
if nombre%diviseur == 0 :
nombre=nombre/diviseur
print(diviseur ,end=" ")
else:
diviseur = diviseur +1
input retourne une chaîne de caractères à convertir en int pour l'utiliser comme entier.
Pour apprendre les bases de Python, il serait plus efficace d'ouvrir un tutoriel. Les bons vous présentent les outils à utiliser avant de vous proposer des exercices. Et feuilleter quelques pages va bien plus vite que de demander de l'aide dans un forum pour des trucs aussi triviaux.
Écrire: nombre = int(input("Quel est le nombre? ")) On n'a pas besoin de se rendre jusqu'au nombre avec les diviseurs, on s'arrête à la racine carrée. Si diviseur est un diviseur de nombre, nombre//diviseur l'est également. Attention aux carrés parfaits. On retrouvera le diviseur deux fois.
Ensuite:
nombre=nombre/diviseur
Ce n'est pas une division entière, il faut mettre // au lieu de /
Tu parles de "facteurs premiers", mais ton code donnera la liste des diviseurs. Ce n'est pas la même chose.
Et que feras-tu si le nombre est premier?
- Edité par PierrotLeFou 7 septembre 2022 à 19:23:56
Le Tout est souvent plus grand que la somme de ses parties.
Voici une version qui ne considère que les facteurs de la forme 6*k ± 1 pour les facteurs premiers:
C'est évidemment avec les grands nombres premiers que ce code sera le plus lent. - def extraire(premiers, nombre, facteur): compte = 0 while nombre % facteur ==0: compte += 1 nombre //= facteur if compte: premiers.append((facteur, compte)) return nombre
nombre = int(input("Quel est le nombre ? ")) premiers = [] nombre = extraire(premiers, nombre, 2) nombre = extraire(premiers, nombre, 3) for facteur in range(5, int(nombre**0.5+0.5)+1, 6): nombre = extraire(premiers, nombre, facteur) nombre = extraire(premiers, nombre, facteur+2) if nombre > 1: extraire(premiers, nombre, nombre) print(" * ".join(f"{f}**{e}" for f, e in premiers))
- Edité par PierrotLeFou 8 septembre 2022 à 18:02:54
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.