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

Fortran Discussion :

Décomposition en facteurs premiers


Sujet :

Fortran

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Décomposition en facteurs premiers
    Bonjour a tous, je suis nouvelle sur le forum, voila mon problème :
    Je dois coder un programme en Fortran afin d'obtenir la décomposition en facteurs premiers d'un nombre N entré au préalable par un utilisateur, je galère un peu , j'ai vu qu'il fallait peut être établir un tableau mais je n'ai pas vraiment compris. Si une âme charitable pouvait m'aider je lui en serait reconnaissante !
    bisous a tous !

  2. #2
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    ça sent le tp classique pour fortran ça...

    pour décomposé en facteur premier, il te faut d'abord trouvé le plus grand nombre premier qui divise ton nombre, tu éfectue l'opération en stockant le nombre premier dans un tableau, et tu recommence l'arrêt se fait quand le résultat de l'opération est égal à 1, c fini, tu les as tous trouvé.

    tu affiche ensuite le résultat: ce sont les nombre premiers que tu as stocké dans tion tableau cqfd
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    le plus grand nombre premier qui divise ton nombre
    Personnellement, je commencerais par le plus petit (par exemple 2 si ton nombre est pair) et j'arrêterais à la racine carrée de ton nombre.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 2
    tableau vide
    Une boucle infinie tant que le nombre ne vaut pas 1:
      si nombre % i est nul:
        ajouter i dans le tableau
        nombre = nombre / i
      sinon:
        i = i +1
    C'est pas optimal, car on teste des nombres non premiers qui ne seront jamais pris en compte, on ne s'arrête pas à racine(nombre), mais ça marche pour des nombres pas trop grand de manière plus rapide que la racine.

  5. #5
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    tu as raison as raison FR119492... c'est vrai qu'avec les nombre premier on a pas à se soucié de l'ordre et c'est sûr, c'est plus facil dans l'ordre croissant !!

    en ayant deux fonction genre "isprime" et "nextprime"

    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
     
    integer :: i,Nombre,premier
    integer,dimension(:) ::tab
     
    Nombre=...
    Premier = 2
    i=1
     
    do
      if (isprime(Nombre)) then
        tab(i)=Nombre
        exit
      end if
      if (mod(Nombre),Premier)==0) then
        tab(i)=premier
        Nombre=Nombre/premier
        i=i+1
      else
        Premier=NextPrime(Premier)
      end if
    end do
    cela te donne même le nombre de facteur...

    tu peux ensuitre traité un peu le tableau pour avoir le nombre de fois que l'on utilise un nombre premier pour un affichage genre 2^4+3^2+5... etc..
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    cela te donne même le nombre de facteur...
    Pas besoin d'avoir autant de fonctions. La mienne fait exactement ça, sans tester si un nombre est premier (car par récurrence, si i divise le nombre, c'est qu'il est premier) et le nombre de facteur (car je ne change de nombre à tester que si le nombre i ne divise plus le nombre, me permettant de dire que chaque i divisant le nombre est effectivement premier).

  7. #7
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    c'est pas faux!! si i divise le nombre alors il est premier car s'il ne l'était pas il serai facteur de nombre premier or on les as déjà enlevé... pas con!!! du coup on a certes pas besoin de se demander s'il est bien premier ou non...

    belle astuce, joli!!!
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

Discussions similaires

  1. Décomposition en facteurs premiers
    Par Invité dans le forum Mathématiques
    Réponses: 7
    Dernier message: 23/04/2012, 23h39
  2. Réponses: 1
    Dernier message: 08/04/2009, 12h17
  3. Décomposition en facteurs communs
    Par Skeeter dans le forum Fortran
    Réponses: 4
    Dernier message: 24/11/2008, 10h41
  4. Décomposition en nombres premiers
    Par WhiteTigerZ dans le forum Pascal
    Réponses: 20
    Dernier message: 13/01/2007, 19h07
  5. Décomposition en facteurs premiers
    Par méphistopheles dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 07/11/2005, 20h56

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