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

Langage Perl Discussion :

Perl


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Par défaut Perl
    bonjour
    je souhaite ecrire une petit programme en perl (je suis debutant en programmation perl)qui me test si un nombre est premier. : nous s'avons que un nombre premier s'il possède uniquement deux diviseur (1 et lui même)

    voici le code que j 'ai ecris mais il ne fonctionne 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
    23
    24
    25
    print "donnez un nombre : ?";
    $nombre = <STDIN>;        # lecture clavier
    chomp($nombre);
     
    print " $nombre est premier " if (premier()==1);
    print  "$nombre n'est pas premier" unless (premier()==0;)
     
     
    sub premier{
     
    my ($nomb)=@_;
    #je teste les nombres impairs car tous les nombres pair ne sont pas #premier
    for($i=3;$i<$nomb/2;$i++) {
     
       if (($nomb%$i)==0){ return 1;}
     
     
       else return 0;
     
     
    }
     
     
     
    }

    [Edit]
    Ajout des balises [ code ] et [ /code ] par 2Eurocents
    [/Edit]

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut Re: Perl
    Citation Envoyé par ngassa
    voici le code que j 'ai ecris mais il ne fonctionne pas

    print "donnez un nombre : ?";
    $nombre = <STDIN>; # lecture clavier
    chomp($nombre);

    print " $nombre est premier " if (premier()==1);
    print "$nombre n'est pas premier" unless (premier()==0


    sub premier{

    my ($nomb)=@_;
    #je teste les nombres impairs car tous les nombres pair ne sont pas #premier
    for($i=3;$i<$nomb/2;$i++) {

    if (($nomb%$i)==0){ return 1;}


    else return 0;


    }
    }
    ta fonction premier attend un argument
    donc ecris plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    print " $nombre est premier " if (premier($nombre)==1);
    print  "$nombre n'est pas premier" unless (premier($nombre)==0);
    sinon qd tu return 1 ou 0 par ta fonction, tu peux juste effectuer ton test de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (premier($nombre) {
      print " $nombre est premier ";
    }else {print  "$nombre n'est pas premier";}

  3. #3
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: Perl
    Citation Envoyé par ngassa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #je teste les nombres impairs car tous les nombres pair ne sont pas #premier
    for($i=3;$i<$nomb/2;$i++) {
    ...
    Citation Envoyé par Un développeur plein de sagesse
    Quand le code et les commentaires se contredisent, les deux sont vraissemblablement faux !
    Une boucle dont l'indice est incrémenté (++) parcourera toutes les valeurs, et pas seulement les valeurs paires ou impaires ...

    un "$i+=2" serait déjà plus pertinent ...

    Sinon, pour améliorer le traitement, un nombre $i n'est pas premier s'il est supérieur à 5 et que soit ($i + 1) % 6 est différent de 0, soit ($i - 1) % 6 est différent de 0.

    Cette méthode accélère les choses, même si elle n'est pas suffisante (elle considérerait de nombreux multiples de 5 comme premiers (25, 35, 45, ...) ainsi que d'autres faux positifs (77, alors qu'il est multiple de 7 et 11)).

Discussions similaires

  1. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 10/08/2002, 23h52
  2. [langage] Inclure de perl en c !!!
    Par ryo00 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2002, 10h03
  3. Réponses: 2
    Dernier message: 30/05/2002, 08h54
  4. [réseaux] Bench en Perl pour avoir le débit entre 2 pc
    Par Frich dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 22/05/2002, 17h22
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

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