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
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
et n?
Ce qu'on trouve est plus important que ce qu'on cherche.
Maths de base pour les nuls (et les autres...)
Oui oui.
On connait n entier positif et on cherche le couple x, y d'inconnues entières et positives aussi.
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...)
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...)
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.
Je pense que c'est les solutions pour x et y inférieures à la limite du crible.
--
Jedaï
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
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
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
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 on optimise le code, oui, il est plus rapide. Et surtout il est parallelisable (un ordinateur dédié pour chacune des 3 listes), si oui est - il vraiment plus performant que celui d'Erastosthene? J'ai du mal à le croire....
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
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
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
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...)
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.
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Partager