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

MATLAB Discussion :

Recherche de nombre premier, problème avec la fonction factor.


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut Recherche de nombre premier, problème avec la fonction factor.
    Bonjour,

    J'ai un petit bout de code qui 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
    for n=2:6
     
        for k=1:30
     
            if factor(k*n-1)~=k*n-1 && factor(k*n+1)~=k*n+1
     
                F(n)=k*n;
                break
     
            end
     
        end
     
    end
    L'erreur vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if factor(k*n-1)~=k*n-1 && factor(k*n+1)~=k*n+1
    J'ai aussi essayé d'utiliser '&' à la place de '&&' mais ça ne marche pas non plus.

    Avec '&&' il dit : "Operands to the || and && operators must be convertible to logical scalar values".

    Avec '&' il dit "Inputs must have the same size".

    Merci d'avance pour vos réponses.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    pourrais-tu joindre la variable factor ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Mac52 Voir le message
    Bonjour,

    pourrais-tu joindre la variable factor ?
    Que veux-tu dire par "joindre" ?

    Me demandes-tu qu'est ce que la fonction 'factor' fait ? 'factor(n)' renvoie la factorisation en nombres premiers de 'n'. Exemple : factor(120) = 2 . 2 . 2 . 3 . 5

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Autant pour moi je ne connaissais pas encore la fonction factor dans Matlab.

    L'erreur provient du fait que le résultat de 'factor' ne contient pas le même nombre d'élément à chaque itération.
    par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> factor(2)
     
    ans =
     
         2
     
    >> factor(4)
     
    ans =
     
         2     2
    Je ne sais pas exactement ce que tu cherches mais je te propose de faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for n=2:6 
        for k=1:30
            ind1 = k*n-1;
            ind2 = k*n+1;
            var1 = factor(ind1);
            var2 = factor(ind2);
            if var1(1,1)~=ind1 && var2(1,1)~=ind2;  % ici on ne prend que la 1ere valeur dans var1 et var2 peut importe leur taille
                F(n)=k*n;
            end
        end
    end
    Si ce sont toutes les valeurs de var1 et var2 que tu souhaites tester tu devras sans doute rajouter des conditions dans ta boucle.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Ce bout de code devrait retourner 'faux' si 'n' est un nombre premier, 'vrai' si 'n' n'est pas un nombre premier.


    Je sais que je peux juste mettre deux 'if' comme ceci :
    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
    for n=1:32
     
        F(1,n)=n;
     
        for k=1:130
     
            if factor(k*n-1)~=k*n-1
     
                if factor(k*n+1)~=k*n+1
     
                    F(2,n)=k*n;
                    break
     
                end
     
            end
     
        end
     
    end
    Et mon programme marche. Mais j'aimerais quand même savoir pourquoi ça ne marche pas quand j'utilise '&&' ou '&', et si possible comment faire pour que ça marche en utilisant '&&' ou '&'.

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Points : 242
    Points
    242
    Par défaut
    Salut, pour moi, si t'as un nombre premier, alors ça veut juste dire que factor n'a qu'un élément.

    ceci : faut bien le travail demandé mais fait de la comparaison élément par élement d'un tableau.

    Il y a plus simple, la fonction isprime(n) ou juste travailler avec numel(factor(n))

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Dombrai Voir le message
    Salut, pour moi, si t'as un nombre premier, alors ça veut juste dire que factor n'a qu'un élément.

    ceci : faut bien le travail demandé mais fait de la comparaison élément par élement d'un tableau.

    Il y a plus simple, la fonction isprime(n) ou juste travailler avec numel(factor(n))
    Merci ! La fonction 'isprime' a résolu le problème.

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

Discussions similaires

  1. Problème : Compter un nombre de documents avec la fonction FSO
    Par Gaetan31 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2014, 08h51
  2. Problème avec une fonction "recherche de pics"
    Par gantix dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 09/07/2014, 16h57
  3. Problème avec la fonction rechercher sur le forum
    Par tornade69 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 3
    Dernier message: 27/09/2008, 00h31
  4. Réponses: 2
    Dernier message: 03/07/2008, 11h36
  5. Problème avec la fonction de recherche Vista
    Par p026687 dans le forum Windows Vista
    Réponses: 5
    Dernier message: 03/10/2007, 11h18

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