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

 C++ Discussion :

Determiner si n est premier ou non


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut Determiner si n est premier ou non
    Bonjour,

    je suis en train de faire un petit exercice.
    Le but est de faire un programme qui détermine si le nombre "n" saisi est un nombre premier ou pas.

    Le programme que j'ai créé dit que tout les nombres sont premier or cen'est pas le cas dans la réalité.

    Voici le code, je pense bien avoir mis les 2 bonnes conditions pour qu'un nombre soit premier, mais cela ne marche pas... .

    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
     
    #include <iostream>
    #include <stdlib.h>
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        int n(0);
     
        cout << " Veuillez choisir un entier " << endl;
        cin >> n;
     
        // Determine si le nombre est premier ou pas.
     
        if ((n/1==n) && (n/n==1)) // Remplire les 2 conditions ( divisible par lui même ET par 1)
     
            cout << " C'est un nombre premier" << endl;
     
        else cout << "Ce nombre n'est pas premier" << endl;
     
        system("pause");
        return(0);

    Merci de guider un débutant motivé

  2. #2
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    Bonjour !

    Quelque chose me dit que les nombres entrés sont tous premiers ?!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((n/1==n) && (n/n==1))
    Un nombre divisé par un sera toujours égal à lui même.
    Et un nombre divisé par lui même sera toujours égal à un.

    Le calcul des nombres premiers est un poil plus compliqué.

    Pour savoir si le nombre x est premier, il faudrait "tester" de 0 à x si x peut être divisé par une autre valeur que 1 ou lui même.

    #edit en admettant parler de nombres entiers.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    oups effectivement avec une bonne nuit de sommeil, cela saute au yeux !

    Bon reste plus qu'a trouver les conditions adéquates.
    Merci

  4. #4
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Points : 1 418
    Points
    1 418
    Par défaut
    Salut,

    petit indice, l'opérateur % permet de récupérer le reste d'une division entière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       cout << 24 % 8; //renvoie 0 ;)

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Il existe plusieurs algorithmes pour trouver les nombres premiers.

    Tu es supposé en trouver un toi-même, ou simplement en implémenter un ?

    C'est pour apprendre l'algorithmique, ou le C++ ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 128
    Points : 64
    Points
    64
    Par défaut
    Bonjour à vous

    Citation Envoyé par Kaamui Voir le message
    Salut,

    petit indice, l'opérateur % permet de récupérer le reste d'une division entière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       cout << 24 % 8; //renvoie 0 ;)
    Oui je connais le modulo, je vais essayer ce soir de trouvé un truc qui passe.

    Citation Envoyé par oodini Voir le message
    Il existe plusieurs algorithmes pour trouver les nombres premiers.

    Tu es supposé en trouver un toi-même, ou simplement en implémenter un ?

    C'est pour apprendre l'algorithmique, ou le C++ ?
    Non, je peut en utilisé un qui existe.
    C'est pour apprendre l'algo et le c++, j'ai pas trop de bases ( le BTS remonte à 4 ans et depuis, je n'ai pas programmer. De plus à l'époque du BTS, la "prog" ne fut pas mon point fort... .

    Actuellement je suis la formation de Concepteur Développeur Info pour faire un master derrière en admin système et réseaux avec mon entreprise.

    Là je suit un peu larguer, mais je m'accroche et je suis motivé motivé... .

    Sinon j'espère que le fait de ne pas être matheux ne va pas me jouer de sales tours.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Kai,

    Pour trouver un algorithme, tu fais le calcul à la main avec une valeur exemple, en notant ce que tu as réellement fait, puis, avec d'autres exemples, tu appliques ce que tu as noté.
    Si tous marchent, c'est ok, sinon tu recommences.

    Ton premier essai ne correspond pas du tout à ça, et en le testant manuellement avec n'importe quel nombre non premier, tu t'en serais aperçu.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Définition d'un nombre premier par WIKI :

    " Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs (qui sont alors 1 et lui-même) "

    Donc en quelque sorte tu dois trouver un genre d'algorithme qui te permet de t'assurer que tous les division autre que 1 ou n donne pas entier.

    Seulement faire vérifier n/1 et n/n ne te permet pas de savoir si un nombre est premier.

  10. #10
    Membre éclairé

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Points : 877
    Points
    877
    Billets dans le blog
    1
    Par défaut
    J'espère qu'en deux semaines juninho aura résolut son problème.

    De plus, ces algorithmes sont donnés un post plus haut.

    Il semblerait plus probable qu'il ai oublié de passer son message en résolut.

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Jai,
    Citation Envoyé par moham104 Voir le message
    Définition d'un nombre premier par WIKI :

    " Un nombre premier est un entier naturel qui admet exactement deux diviseurs distincts entiers et positifs (qui sont alors 1 et lui-même) "

    Donc en quelque sorte tu dois trouver un genre d'algorithme qui te permet de t'assurer que tous les division autre que 1 ou n donne pas entier.

    Seulement faire vérifier n/1 et n/n ne te permet pas de savoir si un nombre est premier.
    Saut que la définition est "Un nombre premier a deux diviseurs".

    Si on prend celle de Wiki, et le problème est que cette erreur est si répandue que tout le monde croit que c'est la bonne, 1 étant divisible par 1 et par lui-même, il devrait être premier, et il faut donc en plus dire qu'il ne l'est pas, par convention.
    Alors qu'avec la bonne définition, 1 n'est pas premier, puisqu'il n'a qu'un diviseur.


  12. #12
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut
    Citation Envoyé par droggo Voir le message
    Jai,
    Si on prend celle de Wiki, et le problème est que cette erreur est si répandue que tout le monde croit que c'est la bonne, 1 étant divisible par 1 et par lui-même, il devrait être premier, et il faut donc en plus dire qu'il ne l'est pas, par convention.
    deux diviseurs distincts 1 et ... 1?

  13. #13
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Joa,
    Citation Envoyé par therwald Voir le message
    deux diviseurs distincts 1 et ... 1?
    J'ose espérer que c'est bien de l'humour, comme je le pense.

  14. #14
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Points : 1 475
    Points
    1 475
    Par défaut

Discussions similaires

  1. Verifier si le textarea est vide ou non
    Par marsupilami34 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/02/2009, 07h44
  2. select sur premier caractère non alphabétique
    Par blasted dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 11h58
  3. [VBA-E]selectionner la premiere cellule non vide d'une ligne
    Par muse47 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/10/2005, 08h11
  4. Réponses: 11
    Dernier message: 26/05/2005, 13h43
  5. Noyau du deboggeur BORDBK41.dll est manquant ou non rescencé
    Par Colinbayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/12/2004, 00h09

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