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 :

[Algo] Test de primalité


Sujet :

Mathématiques

  1. #1
    Nouveau membre du Club

    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 25
    Points
    25
    Par défaut [Algo] Test de primalité
    Voilà mon professeur de maths m'a dit qu'il existait un algorithme pour trouver plus rapidement les nombres premiers et que celui-ci s'appelait le test de primalité, si vous pouviez me le donner ce serait gentil ;-).

    Merci.

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut


    http://cermics.enpc.fr/polys/oap/node91.html


  3. #3
    Nouveau membre du Club

    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 25
    Points
    25
    Par défaut
    Merci

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Le problème du test de primalité en un temps polynomial a été résolu l'année dernière par 3 indiens, après 3000 années d'efforts ( ). Il est extrêmement simple à développer! Et j'en ai parlé... dans la taverne. Si cela t'intéresse je te filerai les coord. pour le rapatrier.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Cet algo est certes le premier à pouvoir resoudre le problème de la primalité en un temps polynomial. Mais est-il vraiment performant ? Je demande ça parce qu'un algo en O(1,2^n) qui bien que exponentiel n'est pas moins intéressant qu'un algo en O(n^100) pour les relativement petite valeur de n. Qu'en est-il de cet algo ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Nemerle!
    Le problème du test de primalité en un temps polynomial a été résolu l'année dernière par 3 indiens, après 3000 années d'efforts ( ). Il est extrêmement simple à développer! Et j'en ai parlé... dans la taverne. Si cela t'intéresse je te filerai les coord. pour le rapatrier.
    Cet algorithme à surtout le mérite de répondre à la question: "Prime is in P" par OUI. Cela reste un gros résultat THEORIQUE.

    En pratique, on utilise toujours Miller-Rabin (par exemple pour la génération des clés RSA) malgré son caractère probabiliste: il se peut qu'il indique un résultat comme 'Le nombre est premier' alors que c'est faux.
    Pour les paranos, il y a aussi l'algo ECPP (Elliptic Curve Primality Proving: complexité O((lnN)^5 ou 6, je me rappelle pas): il est polynomial, probabiliste mais dans le sens ou il se peut qu'il ne réponde pas (mais c'est TRES,TRES rare) . Mais la réponse est toujours vraie (avec certificat de primalité ou non-primalité). C'est cet algorithme qui détient le record du plus grand nombre premier général (ie sans forme particulière comme les nombres de mersennes pour lequels il existe d'autres algorthimes).

    Bref, contrairement à ECPP, AKS est simple à développer mais il trés, trés loin de le concurrencer. De plus, Miller-Rabin est amplement suffisant. Notre maître D.E Knuth à écrit: si un nombre aléatoire "passe" 25 tests de MR indépendant alors la probabiilité que celui-ci ne soit pas premier est inférieur à la probabilité d'un disfonctionnement du processeur dû à un rayon cosmique (D.E Knuth, The Art of Computer Programming. Volume2: Semi-Numerical Algorithms, p395).

    A+

    PS: Tout sur ECPP à http://www.lix.polytechnique.fr/~morain/Articles/articles.francais.html Attention ! De solides connaissances en géométrie algébrique et théorie des nombres sont requises pour lire ces publications.

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Amilin>> Quand tu parles de "très très loin de le concurrencer", tu peux développer? Ancien matheux, je m'intéresse à l'AKS de façon ludique...

    Autre remarque: l'AKS actuel n'est pas optimisé; ils pensent réduire à une complexité en t^5...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Nemerle!
    Amilin>> Quand tu parles de "très très loin de le concurrencer", tu peux développer?
    En fait, je me basais sur
    http://www.lix.polytechnique.fr/Labo/Francois.Morain/aks-f.pdf
    mais effectivement, le monde va vite et je n'avais pas vu les développements récents
    http://developer.apple.com/hardware/ve/pdf/aks3.pdf
    http://www-math.uni-paderborn.de/~preda/papers/myaks1.ps
    http://cr.yp.to/papers/quartic.pdf
    je verrais ça d'un peu plus près quand j'aurais le temps...

    Citation Envoyé par Nemerle!
    Autre remarque: l'AKS actuel n'est pas optimisé; ils pensent réduire à une complexité en t^5...
    Apparement, sous certaines conditions (notamment la GRH), ils sont descendu à O(log(n)^(4+o(1)) (supposer la GRH n'étant pas un problème: si l'algorithme échoue, on a un contre exemple et la GRH est fausse ce qui seraît un résultat bien plus important que la primalité d'un entier... ). Le problème est (comme toujours) la constante dans le grand O...
    Mais ECPP evolue aussi: ftp://lix.polytechnique.fr/pub/submissions/morain/Preprints/large.ps.gz... complexité heuristique O((log(n)^4). Détient actuellemnt le record de 10041 chiffres.
    Et il faut aussi tenir compte de la complexité en MEMOIRE (qui apparement pose des problèmes dans l'AKS à cause de polynôme de degré gigantesque).
    Bref, il faut laisser murir l'algo (par exemple, en factorisation, il a fallut attendre quelques années avant d'avoir un GNFS "rentable" par rapport au MPQS malgré une complexité inférieure et il ne l'est d'ailleurs toujours pas pour des nombres de moins d'~110 chiffres).

    Citation Envoyé par Nemerle!
    je m'intéresse à l'AKS de façon ludique...
    Moi aussi, même si mon intérêt pour la factorisation est supérieur.

    Citation Envoyé par Nemerle!
    Ancien matheux
    Idem (enfin matheux... juste un DEA Algébre et géométrie)

    A+

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Merci de ces précisions! Moi ça a été un odctorat en représentations des gropues réductifs et cohomologie de Yoneda....

    J'ai par ailleurs développé un générateur de nombres aléatoires superastronomique (de période 2^10281), avec juste une initialisation par 256 bits. Tu sais si les générateurs superastronomiques sont utilisés en pratique?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Tu sais si les générateurs superastronomiques sont utilisés en pratique?
    Le Caltech http://www.ugcs.caltech.edu/info/gsl/rng_8.html en conseille pour les simulations (il ne dise pas de quoi).

    A+

  11. #11
    Membre habitué Avatar de Metal Tom
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Blawk
    Cet algo est certes le premier à pouvoir resoudre le problème de la primalité en un temps polynomial. Mais est-il vraiment performant ? Je demande ça parce qu'un algo en O(1,2^n) qui bien que exponentiel n'est pas moins intéressant qu'un algo en O(n^100) pour les relativement petite valeur de n. Qu'en est-il de cet algo ?
    Généralement quand un algo est polynomial, le degré est relativement faible. Et puis O(n^100) pour une entrée de taille 1000000 c'est toujours plus rapide que O(2^n) :-)

    Par contre l'algo de primalité est un algo randomisé avec une probabilité d'erreur de 1/2 avec certaines propriétés. Du coup pour réduire la probabilité d'erreur on exécute plusieurs fois l'algo et à chaque fois on divise par 2 la probabilité d'erreur. Genre si on appelle 100 fois l'algo on a une probabilité de (1/2)^100 ce qui fait environ 1/(1000^10) ce qui est relativement correct.

    Pour reprendre la question de la complexité de cet algo : même avec 100 voire 1000 appels de l'algo on reste en temps raisonnable pour une grande entrée.

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

Discussions similaires

  1. Test de primalité Miller-Rabin
    Par bestmomo dans le forum Probabilités
    Réponses: 10
    Dernier message: 15/09/2010, 19h32
  2. Test de primalité.
    Par kaari kosaku dans le forum Mathématiques
    Réponses: 1
    Dernier message: 27/04/2009, 11h14
  3. Test de primalité
    Par le marocain dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 23/10/2007, 10h26
  4. [débutant] test de primalité
    Par grand_prophete dans le forum C
    Réponses: 14
    Dernier message: 08/10/2006, 12h32
  5. tests de primalité
    Par 123quatre dans le forum C
    Réponses: 2
    Dernier message: 20/12/2005, 09h55

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