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 :

calculs nombres premiers


Sujet :

Python

  1. #1
    Membre régulier
    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
    Points : 101
    Points
    101
    Par défaut calculs nombres premiers
    bonsoir,
    dans ce code j'ai la valeur 4 qui s'affiche je sais pas pourquoi alors que les valeurs suivante de 2 doivent êtres impaires

    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
    26
    27
    28
    """ auteur: Mrabet Faten
        date : 17 mars 2019
        but du programme : une fonction booléenne (qui renvoie True ou False) premier(n) qui reçoit un nombre entier positif:
        n en paramètre, et qui, renvoie la valeur booléenne True si n est un nombre premier> et False sinon
    """
    from math import sqrt
    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 list(x):
    ## Fonction qui list les nombres premiers jusque X.
    	i=2;
    	while(i<x):
    		if(premier(i)):
    			print (i)
    		i=i+1
     
    x=int(input())
    list(x)

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Ligne 13, pour la 2ème inégalité, je mettrais <= au lieu de <
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il y a pas mal d'améliorations élémentaires à prévoir à ce code, et au moins ces trois-là:

    - 2 est le seul nombre pair à être premier. Il est donc inutile de tester les nombres pairs suivant! Après 2, on démarre à 3 et on incrémente de 2 à chaque boucle (i=i+2).

    - dans premier(nombre), si on n'a pas trouvé de diviseur avant sqrt(nombre), on n'en trouvera plus après: il n'est donc pas utile d'aller plus loin.

    - dans premier(nombre), une fois qu'on a trouvé un diviseur, on sait que le nombre n'est pas premier: il ne faut donc pas continuer à chercher => il faut arrêter la boucle while en retournant False tout de suite
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Cherche reponse
    Bonjour,

    Est ce que je peux savoir la reponse finale car moi aussi je fais cet excercice

    Merci

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par AbdMung0 Voir le message
    Est ce que je peux savoir la reponse finale
    La réponse est 42.

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par AbdMung0 Voir le message
    Est ce que je peux savoir la reponse finale car moi aussi je fais cet excercice
    Voici un exemple de fonction en pseudo-code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fonction estpremier(n)
     
        si n<2:
            renvoyer faux car aucun nb premier en dessous de 2
     
        si n est pair:
            renvoyer vrai seulement si n est égal à 2, faux sinon
     
        boucle: on essai de k=3 jusqu'à racine(n)+1 avec un pas de 2:
            si n est divisible par k: 
                renvoyer faux             
     
        renvoyer vrai puisque n est premier (aucun diviseur n'a été trouvé)
    Pour vérifier: faire la liste des nb premiers < 100, et comparer avec celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    D'accord, j'ai bien compris le code.

    Merci beaucoup

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

Discussions similaires

  1. multithread pour calcul nombre premier.
    Par fred61 dans le forum C#
    Réponses: 7
    Dernier message: 18/05/2014, 11h20
  2. Calcul nombre premier
    Par l4r3nZu dans le forum PL/SQL
    Réponses: 7
    Dernier message: 01/06/2011, 13h51
  3. [MASM32] Calcul nombres premiers : l'assemblage ne s'achève pas
    Par Voldemort09 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 25/09/2008, 22h49
  4. Réponses: 9
    Dernier message: 12/10/2006, 00h36
  5. [LG]Calcul des 15 premiers nombres premiers
    Par yffick dans le forum Langage
    Réponses: 12
    Dernier message: 18/09/2004, 14h57

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