j'ai l'énoncé suivant:
Enoncé
Ecrivez une fonction prime_numbers qui prend comme paramètre un nombre entier nb et qui renverra une liste contenant les nb premiers nombres premiers.
Nous vous demandons de penser aux différents cas pouvant intervenir dans l'exécution de la fonction. Si le paramètre est du mauvais type ou ne représente pas un entier positif, votre fonction doit renvoyer la valeur None
Pour rappel, un nombre premier b est un entier naturel qui admet que deux diviseurs distincts entiers et positifs : b et 1. En d'autres termes, b est premier si il n'existe pas d'entiers naturels c et d différents de b et de 1 tel que b=c×d.
Note :
Mathématiquement, on peut définir un nombre premier b comme étant un nombre tel que :
(b≥2)∧(∄a⋅(1<a<b)∧(bmoda=0))
qui en français signifie : b est un nombre (entier) plus grand ou égal à 2 et il n'existe pas de nombre (entier) a strictement plus grand que 1 dont le reste de la division de b par a soit nul.
voilà le code proposé :
le test a donné ça:
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 def premier(nombre): ## Fonction qui determine si un nombre est premier ou non. nb=True if(nombre==0 or nombre ==1): nb=False i=2 while(i<=(nombre-1) and i<=(nombre/2)): if(nombre%i==0): nb=False; i=i+1 return nb def prime_numbers(nb): ## Fonction qui list les nombres premiers jusque nb list=[] i=2; if (type(nb) != int or nb < 0): return None while(i<nb ): if(premier(i)): list.append(i) i=i+1 return list
ok L'entête de la fonction prime_numbers est correctement défini
fail prime_numbers(4) n'a pas retourné [2,3,5,7]
ok prime_numbers(0) a retourné []
ok prime_numbers(-1) a retourné None
ok prime_numbers('b') a retourné None
je trouve pas l'origine de l'erreur vis à vis l'énoncé
Partager