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 : 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
}
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
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 : 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)
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é...