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 :

fonction qui calcule le resultat de g^x mod p


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Points : 31
    Points
    31
    Par défaut fonction qui calcule le resultat de g^x mod p
    Bonsoir je dois réaliser une petite fonction qui calcule le resultat de g^x mod p

    x on le transforme de nombre en binaire

    le probleme c'est que pour les petits resultats cela fonctionne comme 358^248 mod 13 = 6

    mais on nous a demandé de possèder ce resultat pour cet exemple là :
    modPow(-2, -12345, 1073741827) == 11418853 et j'obtiens 1

    La raison est apparament d'après l'énoncé :
    Si vous n’obtenez pas ce résultat, l’un des problèmes possibles est dû à un dépassement de la précision des long : vous n’avez pas systématiquement réduit modulo p.
    Mais je vois pas du tout.
    Merci de votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Points : 533
    Points
    533
    Par défaut
    Bonjour,

    dans ton code tu dis : tant que x > 0 ....., or dans l'exemple qui ne fonctionne pas x < 0 donc on sort de la boucle et a vaut 1.

    A la sortie de la boucle on retourne le reste de 1 divisé par p soit 1.

    vérifie que la "Russian Peasant's method" fonctionne avec les nombres négatifs

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    -2^-12345 = 1 / (-2 ^ 12345), ça dois valoir quelques millionièmes de milliardièmes de je ne sais pas quoi. On est bien loin derrière la virgule, ça ne pourra jamais tenir dans un nombre entier puisque ce résultat n'est pas entier. Tu est sûr que l'énoncé ne met pas plutôt -2 et +12345 ???


    De plus, il faut savoir que, en java, le modulo ne tiens pas compte du signe. -1 %3, c'est -1, alors qu'en mathématique, parfois, on considère que -1%3 = 2. A voir ce que ton prof entends par le modulo d'un nombre négatif.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    Merci de vos réponse,

    Nan le prof ne s'est pas trompé l'énoncé est ici :
    http://apollinaire.prism.uvsq.fr/Pas...e%20g%C3%A9ant

    Question 3

    La question précédente on fait l'inverse , 1/x mod n donc je pense que je vais faire g^-x mod n = 1/(g^x) mod n = (1/g)^x mod n

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    edit : enfaite je pense avoir trouvé mais je dois comprendre pourquoi j'ai faux sur mon résultat :


    pour avoir 1/g^x mod n je dois l'obtenir à partir de l'inverse 1/g mod n *-x (-x car le x de l'exemple est négatif )

    car 1/g * 1/g =1 /g^2 etc. j'usqu'a x

    Donc j'ai fait :

    inverse(g,p)*-x
    Mais c'est dans la formule ou j'ai du me tromper et je vois pas ou

    edit : je le multiplie pas par lui même ça va pas aider

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    Merci lucho , les deux méthodes fonctionnes.

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

Discussions similaires

  1. [Macro Excel] Fonction qui calcule une formule dans une cellule
    Par Enthau dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2008, 16h31
  2. fonction qui calcule log
    Par acacia dans le forum Débuter
    Réponses: 5
    Dernier message: 15/02/2008, 13h19
  3. fonction qui calcule le nombre de checkbox cochés
    Par namstou3 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/10/2007, 13h55
  4. fonction qui calcule la factorielle ?
    Par piff62 dans le forum C
    Réponses: 8
    Dernier message: 27/02/2005, 11h00
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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