Bonjour à toutes et tous,
Je débute en Python et je me suis lancé dans un script (cf. ci-dessous) qui teste si un nombre est premier.
Cela fonctionne parfaitement en utilisant des nombres plus petits que 10^12 (p.ex. 1000000008673).
Malheureusement, en utilisant des nombres plus grands et impairs, l'interpréteur (repl.it ou IDLE sur Mac) me dit que le nombre se divise par 2(p.ex. 100000000867300001)
Il semblerait que cela provienne d'un "problème" de division...
Quelqu'un peut-il m'aider.
Merci d'avance.
Yvan
Voici mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 from math import * while True: # s'exécute tant le nombre saisi n'est pas un entier supérieur à 1 try: nombre = int(input("Entrer un entier positif supérieur à 1 : ")) if nombre > 1: break except ValueError: continue if nombre == 2: print("_____________________________________________________") print(nombre, "est un nombre premier !") else: if nombre/2 == nombre//2: print("_____________________________________________________") print(nombre, "n'est pas premier car il se divise par 2") else: compteur = 0 limite = int(sqrt(nombre)) # tester les diviseurs jusqu'à la racine carré du nombre saisi for x in range (3, limite + 1): if nombre/x == nombre//x: compteur = compteur + 1 break if compteur > 0: print("_____________________________________________________") print(nombre, "n'est pas premier car il se divise par", x) print(nombre, ":", x, "=", nombre//x) #print(x) else: print("_____________________________________________________") print(nombre, "est un nombre premier !")
Partager