Bonjour/Bonsoir:
je suis actuellement en train de coder un algorithme permettant de déterminer les nombres premiers dans un intervalle (programme relativement simple) et j'ai utilisé comme brique de base une fonction que j'avais codé en C++:
Cette fonction va tester des nombres donnés et indiquer s'ils sont croissants, j'ai tenté de la retranscrire en python (je dois rendre ce travail en python) et voilà ce que cela donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 vector<int>premier bool est_premier(int n) { for (int p = 0; p<prime.size(); ++p) if (n%prime[p]==0) return false; // no remainder: prime[p] divided return true; // no smaller prime could divide }
Puis je teste cette fonction dans un intervalle de 3 à 100 avec 2 considéré comme le plus petit nombre premier ( 1 est écarté).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 liste_premiers = [] def est_premier(n): p = 0 while p < len(liste_premiers): if n % liste_premiers[p] == 0: p = len(liste_premiers) return False # ce n'est pas un nombre premier return True #c'est un nombre premier
mais quand j'exécute le programme il me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 liste_premiers.append(2) #le plus petit nombre premier i = 3 while i <= 100: #on veut connaître les nombres premiers de l'intervalle [3;100] if est_premier(i): liste_premiers.append(i) i+=1 print ("Nombres premiers:") for element in liste_premiers: print (element)
2
3
5
7
9
11 .... de deux en deux jusqu'à 99
J'en ai déduit que seule l'opération i % 2 était effectuée, je pense qu'il s'agit d'une erreur au niveau des return de la fonction "est_premier" (je me débrouille très mal en Python).
Pourriez-vous me donnez une piste de travail s'il vous plaît?
Merci d'avance!
PS (aux modérateurs): je n'avais aucune idée d'où mettre cette discussion, j'ai pensé que calcul scientifique serait le plus approprié...
Partager