OBTENIR TOUTES LES NOMBRES PREMIERS DANS UNE GRANDE RANGÉE AU MOINS DE 10 MS!

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 19 avril 2007 à 18:55
_michel Messages postés 77 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 12 août 2010 - 28 juin 2008 à 23:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42350-obtenir-toutes-les-nombres-premiers-dans-une-grande-rangee-au-moins-de-10-ms

_michel Messages postés 77 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 12 août 2010
28 juin 2008 à 23:50
http://www.cppfrance.com/codes/RECHERCHE-NOMBRES-PREMIERS-CRIBLE-ERATOSTHENE_38335.aspx

Voila un exemple d'optimisation avec la mémoire. En plus avec les opérateurs basiques (&, |, <<, >>) on gagne beaucoup en vitesse.
_michel Messages postés 77 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 12 août 2010
28 juin 2008 à 23:24
Pour bcc55, ça ne compile pas...
_michel Messages postés 77 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 12 août 2010
28 juin 2008 à 15:17
"exactement Kirva!
son seul inconvénient c'est la grande mémoire!dieu merci qu'on est dans l'époque des 1Go de RAM!
a bientot.."
Justement pour la mémoire il y a une optimisation : on peut juste utiliser un bit par nombre impair, ça diminue par 16 l'espace mémoire requis. Comme ça on gagne 8 ans sur la technologie (loi de Moore). Pour la rapidité je ne sais pas si ça rend plus rapide ou moins (je dirais moins mais on ne sais pas car les opérateurs << et >> sont extremement rapides).
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
20 juil. 2007 à 11:46
Ben si, et c'est même très facile à prouver (ce qui ajoute à l'élégance de la démonstration ^^). Mais on parle ici de trouver tous les nombres premiers dans un intervalle fini, et ça, il y en a un nombre fini.
Yunchi Messages postés 100 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
20 juil. 2007 à 10:21
il n'y a pas une infinite de nombres premiers ?
elkasimi2007 Messages postés 20 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 26 mai 2011
20 avril 2007 à 23:34
exactement Kirva!
son seul inconvénient c'est la grande mémoire!dieu merci qu'on est dans l'époque des 1Go de RAM!
a bientot..
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
20 avril 2007 à 17:51
"Sieve", c'est pas juste le mot anglais pour "crible" (d'Eratosthène) ? Le coup classique qui marche bien si on a bcp de mémoire quoi :)
elkasimi2007 Messages postés 20 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 26 mai 2011
20 avril 2007 à 16:41
salut,
je crois que le pdf qui est dans le zip explique l'algorithme de sieve.
merci pour vos commentaires.
ThicAThic Messages postés 1 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 15:49
Peux-tu me donner un lien vers un site qui expliquerait l'algorithme de sieve, SVP ? Je n'en ai pas trouvé sur BibMath ni d'autres algo donnant et/ou calculant la suite des nombres premiers. Et ça m'intéresse. Merci.
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 avril 2007 à 11:51
Pour ma part je pense que le GC a tout à fait sa place dans les langages managés qui se veulent rapide et sure en terme de développement.
Maintenant il est sure qu'un "vrai logiciel" (à mon sens) a tout interet à etre codé en C/C++/ASM tout court.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
20 avril 2007 à 11:09
+1 pour brunews, autant pour le café que pour le garbage collector :) et j'adore le café.

C'est une question d'habitude on va dire, garbge collector ou pas ... Mais je me sens terriblement impuissant quand je programme avec un GC personnellement :/. La gestion de la mémoire est vrmnt un souci central quand on programme. C'est déjà compliqué de savoir quand l'argument est passé par valeur ou par référence en Java O_o.

Du reste, le petit détail de syntaxe qui vous occupe est une extension GCC je crois. Suffit de ne pas l'utiliser.

Au fait: le screenshot est peut-être pas super utile, et bon ... "grande rangée", ça reste à voir. Pour les nombres premiers, couvrir tous les nombres représentables avec un int est assez standard, donc ne nous emballons pas ;).
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
19 avril 2007 à 23:44
Il y a des gens qui disent que "Java est une réligion".
Pas moi, mais je comprends ce qu'ils veulent dire. C'est le goût et l'extase de la programmation.
Personnellement, Je déteste le café et tout ses dérivées
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2007 à 23:06
Le nescafé non plus, sauf que ça n'a plus rien à voir avec du café.
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
19 avril 2007 à 22:20
Salut tous:

Brunews >> crois moi le garbge collector n'est pas une connerie.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2007 à 21:13
dans le cas de:
d=U-L+1;
char flag[d];
le compilo ne pourrait pas présumer que ça va tenir sur stack.
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
19 avril 2007 à 20:59
j'ai vérifié en rajoutant

void alala() {
int d = 50;
char *c = __alloca(50);
c[0] = 48;
}

la zone est bien dans la pile
je trouve ça utile, à part le fait d'appeler __alloca
(pourquoi pas un
sub $50, %esp
directement au lieu d'appeler __alloca ??)
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
19 avril 2007 à 20:56
salut

http://mx.isti.cnr.it/cgi-bin/conan?key=CC~Language_topics~Builtin_Functions~__ALLOCA&title=VMS%20Help&referer=


avec gcc -S sous cygwin:

void alala() {
int d = 50;
char c[d];
}

.globl _alala
_alala:
pushl %ebp
movl %esp, %ebp

subl $8, %esp
movl %esp, %edx
movl $50, -4(%ebp)
movl -4(%ebp), %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
movl %eax, -8(%ebp)
movl -8(%ebp), %eax
call __alloca
movl %edx, %esp
leave
ret

en clair ça veut dire que c'est équivalent à:
void alala() {
int d = 50;
char *c = __alloca(50);
}
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2007 à 20:39
Je n'ai pas envie d'essayer sur VC 2005, je tiens à controler les allocs et desallocs moi meme sinon je vais faire du VB.
Cyberboy2054 Messages postés 173 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 22 août 2008
19 avril 2007 à 20:27
Moi aussi j'ai du mal à comprendre comment ce genre de syntaxe peut etre géré efficacement dans un programme de plus grande échelle. D'ailleurs tu devrais etre content Brunews, mais apparement ce genre d'ecriture ferait partie des futures normes du c++ (selon un pote en iut info, qui le tient d'un de ses profs). On leur apprend même a utiliser l'ecriture ci dessus O_o

A remplacer bien evidemment par un char *flag = (char*)malloc (d*sizeof(char)) puis free (flag) en fin de programme, pour rester dans du C propre et portable. D'ailleurs ca ne compile pas sous visual C++ 6.
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2007 à 20:02
Je pense tout simplement qu'il y a des langages interprétés pour ce genre de connerie, gabage collector et autres bidules.
elkasimi2007 Messages postés 20 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 26 mai 2011
19 avril 2007 à 20:01
salut,
vraiment c'est formidable on ressent vraiment que le monde est vivant
avec 4 commentaires,merci pour votre soutien les gars.
je vous promis toujours mon meilleur possible!
cs_6co Messages postés 114 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 avril 2012 1
19 avril 2007 à 19:54
excuse moi, je ne saisis pas ce que tu veux dire...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2007 à 19:35
Ben ça s'arrange pas, tu n'as aucun controle du moment de la desalloc.
cs_6co Messages postés 114 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 avril 2012 1
19 avril 2007 à 19:28
ça compile sans problème chez moi (avec GCC)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 avril 2007 à 18:55
d=U-L+1;
char flag[d]; ça compile ???
Rejoignez-nous