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

avec Java Discussion :

Probleme nombre premiers


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Par défaut [RESOLU] Probleme nombre premiers
    Bonjour à tous, j'essaie d'écrire un petit programme qui affiche les nombres premiers de 1 à 100, j'ai beau relire mon code, la démarche m'a l'air bonne mais quand je l'exécute rien ne se passe

    voici le code (je commence à parcourir les nombres à partir de 2, en sachant que 1 n'est pas premier):

    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
    public static void main (String [] args){
     
            int n=100;
     
            for(int i=2; i<n; i++){             
                for (int j=2; j<i; j++){
                    int div=0;
                    if (i%j==0)              
                    {div=div++;}
     
                    if (div==1)
                    {System.out.println(i);}         
                }
     
                } 
            }

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Par défaut
    Salut,

    Déjà remplace div = div++; par div++; ou div = div + 1;

    Ensuite je te laisse regarder le problème suivant =)

    Edit : Penses à la balise code :

    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
    public static void main (String [] args){
     
        int n=100;
     
        for(int i=2; i<n; i++){
            for (int j=2; j<i; j++){
                int div=0;
                if (i%j==0)
                    {div++;}
     
                if (div==1)
                    {System.out.println(i);}
            }
        }
    }

  3. #3
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut Les maths sont tes amies
    Bonsoir,

    tu peux simplifier avec le crible d'Erathostène.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Par défaut
    En effet div=div++, c'était un peu spécial
    J'ai modifié un peu le code et quand je le relis, la methode semble bonne mais il m'affiche seulement 2 et 3


    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
     public static void main (String [] args){
     
            int n=100;
            int div=0;
     
            for(int i=2; i<n; i++){             //on parcourt les nombres i de 2 à 100
                for (int j=2; j<=i; j++){
                    if (i%j==0)              // si le nombre est divisible on incrémente div de 1
                    {div=div+1;}
                }
                    if (div==1)              // si i admet un seul diviseur alors il est premier et on l'affiche
                    {System.out.println(i);
                        div=0;}         
     
     
                } 
            } 
        }

  5. #5
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Le "div=0" mériterait d'être effectué à chaque itération de la boucle i.

    Après, comme dit, ton algo n'est pas optimal.

  6. #6
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut Diviser pour régner
    Bonjour,

    c'est que l'on m'a souvent en dis en info

    En fait, il y a l'astuce très simple qui consiste à faire ce test uniquement avec des nombres impairs, puisque tu sais déjà que tous les nombres pairs ne sont pas premiers puisque divisibles par 2

    Ensuite, la solution est écrite dans la démonstration du crible.

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

Discussions similaires

  1. Réponses: 24
    Dernier message: 27/09/2005, 21h16
  2. [défi n°8]: premiers nombres premiers
    Par javatwister dans le forum Général JavaScript
    Réponses: 41
    Dernier message: 14/06/2005, 10h22
  3. [LG]Calcul des 15 premiers nombres premiers
    Par yffick dans le forum Langage
    Réponses: 12
    Dernier message: 18/09/2004, 14h57
  4. Cripter avec des nombres premiers
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/04/2004, 19h10
  5. premier nombre premier superieur à m=10^100+1
    Par azman0101 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 17/04/2003, 03h23

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