Ben314 a écrit:Salut,
comme je sais pas quoi faire, je te propose une version légèrement plus compliquée de l'algo. (mais sans multiplications) :
Saisir(N)
Créer un tableau A[1..N+5]
A[1]=0; A[2]=1; A[3]=1; I=4;
Tant que I<=N faireA[I]=0; I=I+1; A[I]=1; I=I+1; A[I]=0; I=I+1; A[I]=1; I=I+1; A[I]=0; I=I+1; A[I]=0; I=I+1;
P=5; PP=25; PS=2;
Tant que PP<=N faireP2=P+P; P4=P2+P2; I=PP; IS=PS;
Tant que I<=N faire
A[I]=0;
Si IS=2 Alors I=I+P2; IS=4;
Sinon I=I+P4; IS=2;
Répéter
Si PS=2 Alors P=P+2; PP=PP+P4+4; PS=4;
Sinon P=P+4; PP=PP+P4+P4+16; PS=2;
Jusqu'à ce que A[P]=1
Ben314 a écrit:Eh ben, 1'30'' pour les cent premiers nombres premiers.... Vive le progrès..
A mon avis, je vais plus vite à la main (rappelons que, vu que 11²>100, il suffit d'enlever de la liste les multiples de 2, 3, 5 et 7 et que, comme 7*15>100, les seuls multiples de 7 à enlever sont 7²=49 et 7.13=91...)
Et, sinon, je rapelle que l'objectif était de se placer le plus proche possible de ce qu'aurait fait "un mathématicien grec" et je suis sûr qu'un matheux grec n'aurais jamais calculé je ne sais pas combien de racines carrés (ce que fait ton algo.) et encore moins calculé des parties entière de fractions comme P/L1(k).
L'algo. du crible ne demande AUCUNE division (entière ou réelle) ni vraiment de calculs de produit vu que le seul produit qu'on a à calculer c'est du P*P, et comme il faut le faire de proche en proche, on peut faire comme on le ferait à la main si on devait faire la table des carrés des entiers, c'est à dire en sommant les nombres impairs pour obtenir les carrés successifs.
Nourita a écrit:moi, je veux une programmation en python de crible d'ératosthène.
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 26 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :