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 :

Algorithme quand tu nous tiens : conditions logiques


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut Algorithme quand tu nous tiens : conditions logiques
    Bonjour,

    je suis en train de ramer sur les conditions logiques. Je demande à l'utilisateur d'entrer deux nombres a et b tant que le PGCD(a,26) est différent de 1 et que l'inverse modulaire de a par 26 est égal à -1 (retour d'erreur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      //Initialisation de la clé
      do{
        printf("Entrez la valeur \'a\' de la clef : ");
        scanf("%d",&a);
        printf("Entrez la valeur \'b\' de la clef : ");
        scanf("%d",&b);
      }while ((PGCD(a,26) != 1) && (inv_mod(a) == -1));
      printf("Clef validee ! \n");
    Ça à l'air tout simple, mais mon programme bug à cause de l'inverse modulaire un peu plus loin. Si ça bug, ça veut dire qu'il laisse passer des valeurs a et b non acceptables par la suite. J'ai beau faire des tables de vérité mais je ne trouve pas mon erreur.

    Y aurait-il une âme charitable pour m'aider?

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 192
    Par défaut
    Avec ton code, la clé est jugée bonne si a et 26 sont premiers entre eux, ou si l'inverse modulaire de a ne renvoie pas -1 (ou les deux).
    C'est ce que tu veux ?
    Si la clé est bonne à condition que a et 26 soient premiers ET que inv_mod(a)!=-1, la condition est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ((pgcd(a,26)!=1) || (inv_mod(a)==-1))

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Juste une remarque : b n'est pas utilisé dans le code!!!

  4. #4
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Il faut que les deux propositions soient respectées:
    -PGCD(a,26) ==1
    -inverse modulaire(a) != -1 (retour d'erreur de la fonction)

    Pourquoi le "ou"?

    Le b c'est normal, je m'en sers plus tard, mais il n'y a aucune vérification à faire dessus.

  5. #5
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    Citation Envoyé par v4np13
    Pourquoi le "ou"?
    regarde ce que tu veux : tu veux avoir "pgcd(a,26)==1 ET inv(a) !=-1)

    donc tu boucls tant que cette condition n'est pas verifiée, cad qu'il suffit que l'une des 2 ne soit pas verifiée pour que le a soit mauvais. donc il faut tourner tant que : "pgdc(a,26)!=1 OU inv(a)==-1"

  6. #6
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Je viens de tester avec le "ou", effectivement ça fonctionne mais il n'accepte plus aucune valeur à part 1 pour a. Est-ce normal?

    La fonction PGCD, je suis sur de son algorithme mais celle de l'inverse modulaire, je ne sais pas. Le prof nous a passé une fonction "bête et méchante" comme il dit pour le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
     * Retourne l'inverse modulaire, en cas d'erreur -1
     */
    int inv_mod(int a){
      int i;
      for (i=0;i<26;i++){
        if (a*(i%26) ==1) return i;
      }
      return -1;
    }
    J'ai trouvé un de ses anciens slides de cours, où il donnait la clé K(15,7). Elle devrait marcher mais non ?!

  7. #7
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    essaie de remplacer :

    par

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

Discussions similaires

  1. [AJAX] Ajax quand tu nous tiens
    Par Florent08800 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/08/2007, 21h38
  2. [FRAME] Quand tu nous tiens
    Par hisy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 07/07/2006, 08h27
  3. [Sessions] Session quand tu nous tiens
    Par arti2004 dans le forum Langage
    Réponses: 10
    Dernier message: 27/05/2006, 19h19
  4. Regex quand tu nous tiens !!!
    Par calimero642 dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 14h33
  5. [object HTMLSelectElement] IE quand tu nous tiens
    Par NeHuS dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/03/2006, 08h26

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