Coder un algorithme qui détermine les nombres premiers.
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++:
Code:
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
} |
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:
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 |
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:
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) |
mais quand j'exécute le programme il me renvoie :
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é...