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

Mathématiques Discussion :

Modulo d'un grand nombre


Sujet :

Mathématiques

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Modulo d'un grand nombre
    Bonjour,

    Je suis très ennuyée avec un calcul de modulo 24 sur un grand chiffre, en espérant que quelqu'un aura la solution...
    Voici mon pb :
    je dois donc calculer le modulo 24 d'un nombre grand nombre (la qté de chiffres de ce nombre varie entre 13 et 26) (obtenu par programmation)
    Malheureusement, l'outil de programmation que j'utilise n'est pas capable de traiter de si grands nombres (il ne traite que des integer et donc pas les virgules non plus ). Je dois donc trouver le moyen de décomposer ce sacré nombre de manière à trouver le même modulo.
    Voici un exemple :
    101230122127274567 modulo24 = 23 => comment trouver ce même résultat en ne travaillant que par groupe de 8 chiffres maxi... ça me paraît impossible mais je me trompe peux t-être.
    Merci pour votre aide.

    Fred

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    Bonjour

    Au contraire, c'est tout à fait possible (8 chiffres seulement ? quel langage limite à ça ? même VB c'est 24).

    il te suffit de considérer le premier groupe de chiffres (dans ton exemple 10).

    tu calcul 10 modulo 24= 10 puis tu multiplie par 10^4 (tu ajoute quatre zéros) et tu prend les quatre premiers chiffres du second octet (1230 de 12301221 dans ton exemple *) et tu les ajoute (tu obtient 101230) là tu calcule ton modulo (22) et tu recommence avec le deuxième morceau du second octet (1221 ) au quel tu ajoute le résultat précédemment obtenu *10^4 (soit comme résultat 221221) et tu recommence : 221221 modulo 24= 13
    puis: 132727 modulo 24=7
    puis: 74567 modulo 24=23

    le résultat est donc 23 et tu à une méthode générale pour tout modulo qui ne dépasse pas 9999 (au delà, il faut prendre un décalage plus petit).

    bonne chance


    *Pour calculer le morceau d'un octet, il te suffit de prendre la partie entière de ce nombre divisé par 10^(numéro de la dernière décimale) (dans l'exemple: partie_entière(10^12)).

  3. #3
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Ce que dit Mephistopheles, c'est que

    a*b [mod 24] = (a [mod 24]) * (b [mod 24]),
    a+b [mod 24] = (a [mod 24]) + (b [mod 24]).


    Dans le début de son exemple,

    1012301221
    = (101230*10^4)+1221
    = ((10*10^4)+1230)+1221

    et tu prends chacun des termes en [mod 24].

    Autre façon, plus simple:

    100 [mod 24]=4, et 10^n [mod 24] =16 pour tout n>2.
    Donc, par exemple,

    1012301221 [mod 24] = (1+0+1+2+3+0+1)*16+2*4+2*10+1 [mod 24]

    !!!!

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par Nemerle
    100 [mod 24]=4, et 10^n [mod 24] =16 pour tout n>2.
    Donc, par exemple,

    1012301221 [mod 24] = (1+0+1+2+3+0+1)*16+2*4+2*10+1 [mod 24]
    +1

    C'est comme ca qu'on fabrique les fameux criteres de divisibilité (les regles du genre 'N est divisible par 3 si la somme de ses chiffres est divisible par 3").

  5. #5
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    pseudocode:

  6. #6
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    Bravo nemerle, je connaissait pas cette methode (note ça dans un coin de classe)

  7. #7
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par méphistopheles
    (note ça dans un coin de classe)
    gééé??

  8. #8
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 218
    Points
    1 218
    Par défaut
    heu dans un coin de class*

  9. #9
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut
    Bonjour

    Ne désirant pas créer un nouveau topic pour un sujet ayant déjà été traité, j'ai décidé de sortir ce topic vieux de plus d'un an pour vous demander quelques explications au sujet du calcul de modulo.

    En fait, je me penche actuellement sur le cryptage RSA. J'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Je dois calculer le reste de la division de 76^59 par 91, ce qui se note, je pense, comme ceci :
    
    (76)^59 = x mod 91
    La réponse attentue est 6 (donnée au cours et également par Maple). Toutefois, je ne parviens pas à tomber sur la méthode utilisée pour parvenir au reste : 6.

    Je m'en remets donc à vous.

    En vous remerciant d'avance,

    Nicolas.

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Tu cherches n tel que 76^n soit congru à 1 ou -1 modulo 91, tu effectues la division euclidienne de 59 par n et tu décomposes :
    59 = nq + r -> 76^59 = (76^r) * (76^n)^q

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Methode pour 76^59(91)
    En math a la main tu chercherais effectivement un +1 ou un -1 mais en algo ce probleme ( qui se nomme exponentiation modulaire peut se resoudre en log2(puissance) operations ( si toutes les valeurs tiennent sur des variables de bases bien sur ;... )

    Pour le resoudre on part des principes suivants

    a^n = (a^(n/2))² en n'utilisant que des entiers c'est donc
    Si n pair
    -> a^n = a^(n/2)
    sinon
    -> a^n = a * a^[n/2]

    comme le modulo conserve la multiplication on a donc par exemple :
    76^59 modulo 91 = (((76^29) modulo 91)²*76) modulo 76 ( j'ai mis expres le modulo 2 fois pour montrer qu'on peut appliquer le principe recursivement )

    cf google pour plus de precisions ... (http://fr.wikipedia.org/wiki/Exponentiation_modulaire)

    Louis

  12. #12
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    Ce que dit Mephistopheles, c'est que

    a*b [mod 24] = (a [mod 24]) * (b [mod 24]),
    a+b [mod 24] = (a [mod 24]) + (b [mod 24]).
    plutôt

    (a*b) [mod 24] = ((a [mod 24]) * (b [mod 24])) [mod 24],
    (a+b) [mod 24] = ((a [mod 24]) + (b [mod 24])) [mod 24].

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 262
    Points : 230
    Points
    230
    Par défaut
    Salut,

    la solution est ici pour ceux qui aurait le meme problème :

    http://www.developpez.net/forums/d10...o/#post5686484

Discussions similaires

  1. Algorithme de division ou de modulo sur grands nombres
    Par méphistopheles dans le forum Algorithmes et structures de données
    Réponses: 40
    Dernier message: 13/06/2019, 14h58
  2. Modulo de grands nombres en xsl
    Par pbdlpc dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/07/2008, 17h53
  3. Modulos sur des grands nombres
    Par DjPoke dans le forum Mathématiques
    Réponses: 2
    Dernier message: 07/08/2007, 15h32
  4. Réponses: 8
    Dernier message: 21/11/2005, 17h18
  5. Réponses: 3
    Dernier message: 22/05/2005, 12h59

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