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 :

Crible d'Atkin


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut Crible d'Atkin
    Comment trouver tous les couples solutions et de manière optimisée des équations du genre:

    4x² + y² = n

    ou encore

    3x² - y² = n

    merci

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    x et y sont entiers ?

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    et n?
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Oui oui.
    On connait n entier positif et on cherche le couple x, y d'inconnues entières et positives aussi.

  5. #5
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Alors force brute.
    On a une borne supérieure pour abs(y) soit sqrt(n)
    On a une borne supérieure pour abs(x) soit sqrt(n/4)
    On teste tous les couples (x,y) dans le rectangle
    On ne garde que les bons.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Citation Envoyé par Zavonen Voir le message
    Alors force brute.
    On a une borne supérieure pour abs(y) soit sqrt(n)
    On a une borne supérieure pour abs(x) soit sqrt(n/4)
    On teste tous les couples (x,y) dans le rectangle
    On ne garde que les bons.
    Ok mais pour 3x² - y² = n par exemple, ça ne marche pas. N'as - t - ton pas une infinité de solutions dans ce cas ci?

    merci

  7. #7
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Je n'avais pas vu le second exemple.
    Dans le premier cas on a un ensemble borné (ellipse) on peut donc faire comme je suggère.
    Dans le second exemple, l'ensemble est non borné (hyperbole) ça ne marche plus.
    Si au lieu de 3 on avait 4, on pourrait factoriser et partir des décompositions de n en produit de 2 facteurs. Mais avec 3 ...
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Oui c'est bien là le problème....
    C'est un algorithme qui demande ça:

    http://fr.wikipedia.org/wiki/Crible_d%27Atkin

    Je pense qu'il y a une erreur dans l'algo.

  9. #9
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Je pense que c'est les solutions pour x et y inférieures à la limite du crible.

    --
    Jedaï

  10. #10
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Je pense que c'est les solutions pour x et y inférieures à la limite du crible.
    Je confirme cette assertion.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Je ne pense pas.

    Par exemple pour 383 : il est premier et il appartient à la troisième liste, celle pour laquelle on cherche les couples de la forme 3x² - y² = n .

    Si on prend pour valeur limite 400 alors on trouve pour x et y:

    12 et 7
    17 et 22
    31 et 50
    56 et 95
    112 et 193
    207 et 358

    soit 6 couples solutions
    donc un nombre paire de couples solutions
    donc le nombre est évincé de la liste
    autrement dit il n'est pas considéré comme premier ...

    merci

  12. #12
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par piotrr Voir le message
    Par exemple pour 383 : il est premier et il appartient à la troisième liste, celle pour laquelle on cherche les couples de la forme 3x² - y² = n .
    (...)
    autrement dit il n'est pas considéré comme premier ...
    L'erreur classique.

    Dans la 3eme liste, il faut que X>Y
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    L'erreur classique.

    Dans la 3eme liste, il faut que X>Y
    Merci beaucoup!

    D'après ce que j'ai déjà testé ça doit être ça!

    Est ce que tu as déjà programmé le crible d'Atkin, si oui est - il vraiment plus performant que celui d'Erastosthene? J'ai du mal à le croire....

    merci encore

  14. #14
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par piotrr Voir le message
    Merci beaucoup!

    D'après ce que j'ai déjà testé ça doit être ça!
    sans blagues ?

    Est ce que tu as déjà programmé le crible d'Atkin
    Code java : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    public class Atkin {
     
    	public static void main(String[] args) {
     
    		// Upper bound of prime list to generate
    		int MAX=1000;
     
    		// initialize the array to false (by default in java)
    		boolean[] isprime = new boolean[MAX];
     
    		// Atkin's sieve (binary quadratic)
    		int n=0,x2=0,y2=0,mod=0;
    		for(int x=1;x<=MAX;x++) {
    			x2=x*x; 
    			for(int y=1;y<=MAX;y++) {
    				y2=y*y;
     
    				n = 4*x2+y2;
    				if ( n<MAX ) {
    					mod = n%60;
    					if (mod==1 || mod==13 || mod==17 || mod==29 || mod==37 || mod==41 || mod==49 || mod==53) isprime[n]=!isprime[n];
    				}
     
    				n = 3*x2+y2;
    				if ( n<MAX ) {
    					mod = n%60;
    					if (mod==7 || mod==19 || mod==31 || mod==43) isprime[n]=!isprime[n];
    				}
     
    				if ( x>y ) {
    					n = 3*x2-y2;
    					if ( n<MAX ) {
    						mod = n%60;
    						if (mod==11 || mod==23 || mod==47 || mod==59) isprime[n]=!isprime[n];
    					}
    				}
    			}
    		}
     
    		// remove multiples of prime^2
    		for(int i=0;i<MAX;i++) {
    			if (isprime[i]) {
    				int i2 = i*i;
    				for(int j=i2;j<MAX;j+=i2) isprime[j]=false;
    			}
    		}
     
    		// force the 60 first prime numbers
    		for(int i:new int[] {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59})
    			isprime[i]=true;
     
    		// print primes
    		for(int i=0;i<MAX;i++)  
    			if (isprime[i]) System.out.println(i);
    	}
     
    }

    , si oui est - il vraiment plus performant que celui d'Erastosthene? J'ai du mal à le croire....
    Si on optimise le code, oui, il est plus rapide. Et surtout il est parallelisable (un ordinateur dédié pour chacune des 3 listes)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    et pour 539 ...

    Il fait aussi parti de la troisème liste.

    Mais je trouve comme unique couple solution:

    14 et 7

    donc le compte de couples solutions est impaire donc on garde le nombre...

    Seulement 539 n'est pas premier !

    Comment est ce possible?

    merci

  16. #16
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par piotrr Voir le message
    et pour 539 ...

    Il fait aussi parti de la troisème liste.

    Mais je trouve comme unique couple solution:

    14 et 7

    donc le compte de couples solutions est impaire donc on garde le nombre...

    Seulement 539 n'est pas premier !

    Comment est ce possible?

    merci
    Sans doute parceque ca marche mieux quand on déroule complètement l'algorithme, en particulier la partie finale ou on supprime les multiples des p^2.

    Car 539 = 11 * 7^2
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  17. #17
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Le wiki français sur le crible d'Atkin est parfaitement incompréhensible.
    Par contre la version anglaise est limpide:
    http://en.wikipedia.org/wiki/Sieve_of_Atkin
    L'algo donné est parfaitement clair et traduisible immédiatement en n'importe quel langage.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  18. #18
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    On peut même lire le PDF original qui contient le pseudocode (page 3):

    Prime sieves using binary quadratic forms (Atkin, Bernstein)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    On peut même lire le PDF original qui contient le pseudocode (page 3):

    Prime sieves using binary quadratic forms (Atkin, Bernstein)

    Merci mais ils me demandent un mot de passe...

  20. #20
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par piotrr Voir le message
    Merci mais ils me demandent un mot de passe...
    ??

    L'AMS demande des mots de passe maintenant ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Algorithme Crible d'Ératosthène en distribué (application réparti)
    Par tomap3 dans le forum Algorithmes et structures de données
    Réponses: 21
    Dernier message: 12/07/2010, 15h15
  2. crible d'erathostène en prolog
    Par bakomen dans le forum Prolog
    Réponses: 2
    Dernier message: 29/06/2009, 22h20
  3. Implémentation du crible d'Erathostène
    Par pingu dans le forum Débuter
    Réponses: 4
    Dernier message: 12/03/2009, 17h25
  4. mise en oeuvre du Crible d'Atkin
    Par piotrr dans le forum Mathématiques
    Réponses: 2
    Dernier message: 06/02/2008, 13h13
  5. Problème avec le Crible d'Eratosthène. :s
    Par Crunsky dans le forum Langage
    Réponses: 4
    Dernier message: 04/01/2008, 13h47

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