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

Algorithmes et structures de données Discussion :

Test de primalité naïf


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 53
    Points
    53
    Par défaut Test de primalité naïf
    Bonjour,
    j'ai écris un petit programme qui teste la primalité d'un entier et voilà que la méthode la plus naïve me perturbe déjà, 9 nombres que j'ignore ont été envoyés à mon programme, 8 ont passé avec succès sauf un !
    Code java : 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
     
    //.. à l'intérieur de la méthode main
    System.out.println((primaire(n)) ? "Primaire" : "N'est pas primaire");
    //
    boolean primaire(int n) {
      if (n < 3 || pair(n)) return false;
      else {
        int stop = (int) Math.sqrt(n);
        for (int i = 3; i < stop; i = i+2)
          if (n % i == 0) return false;
        return true;
      }
    }
     
    boolean pair(int n) {
      return ((n & 1) == 1) ? false : true;
    }
    À votre avis, qu'est ce qui ne marche pas ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 53
    Points
    53
    Par défaut
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    boolean primaire(int n) {
      if (n < 2 || (n > 2 && pair(n))) // 2 est un nombre pair premier!!
    ...
    Merci et bonne nuit à tous.

  3. #3
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,
    il y a un autre souci dans le code, il va te dire que tous les carrés à partir de 25 sont premiers (pas primaires ....).

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Pas la peine d'invoquer la fonction racine carrée de la bibliothèque.
    test i*i<=n sans sortir du type entier.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

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

Discussions similaires

  1. Test de primalité.
    Par kaari kosaku dans le forum Mathématiques
    Réponses: 1
    Dernier message: 27/04/2009, 11h14
  2. Test de primalité
    Par le marocain dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 23/10/2007, 10h26
  3. [débutant] test de primalité
    Par grand_prophete dans le forum C
    Réponses: 14
    Dernier message: 08/10/2006, 12h32
  4. tests de primalité
    Par 123quatre dans le forum C
    Réponses: 2
    Dernier message: 20/12/2005, 09h55
  5. [Algo] Test de primalité
    Par Khorne dans le forum Mathématiques
    Réponses: 10
    Dernier message: 04/04/2004, 10h30

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