IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

la fonction "prime_numbers"


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Par défaut la fonction "prime_numbers"
    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é :
    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
    le test a donné ça:
    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é

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par FATENMRABET Voir le message
    je trouve pas l'origine de l'erreur vis à vis l'énoncé
    Il faut apprendre à lire l'énoncé: prime_numbers(4) doit retourner les 4 premiers nombres premiers et non les nombres premiers inférieur à 4.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre très actif
    Femme Profil pro
    étudiante chercheuse
    Inscrit en
    Septembre 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante chercheuse
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 274
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Il faut apprendre à lire l'énoncé: prime_numbers(4) doit retourner les 4 premiers nombres premiers et non les nombres premiers inférieur à 4.

    - W
    oui c'est vrai, merci pour la remarque,

    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
    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):
    	list=[]
    ## Fonction qui list les nombres premiers jusque X.
    	i=2;
    	if (type(nb) != int or nb < 0):
    		return None
    	if (nb==0):
    		return list
    	for i in range (nb+4) :
    		if(premier(i)):
    			list.append(i)
    		i=i+1
    	return list

  4. #4
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    Voici ce que je propose

    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
    import math
     
    def prime(n):
    	if n < 3:
    		return False
    	for i in range(2, round(math.sqrt(n))):
    		if n%i == 0:
    			return False
    	return True
     
     
    def prime_numbers(n):
    	if not isinstance(n, int):
    		return []
    	if n < 0:
    		return []
    	ret = []
    	k = 0
    	while len(a) != n:
    		if prime(k):
    			a.append(k)
    		k += 1
    	return ret

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Evaluation de la fonction quote
    Par Toitoine dans le forum Lisp
    Réponses: 2
    Dernier message: 05/05/2007, 19h13
  2. [Fonction] Quote et guillemet dans un textarea
    Par ddelec24 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/03/2007, 15h51
  3. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54
  4. Inverse de la fonction QUOTE() ?
    Par __fabrice dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/07/2006, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo