NOMBRES PREMIERS - ERATOSTHENE QUASI ILLIMITÉ

Signaler
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
-
Messages postés
77
Date d'inscription
mardi 27 juin 2006
Statut
Membre
Dernière intervention
12 août 2010
-
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/39906-nombres-premiers-eratosthene-quasi-illimite

Messages postés
77
Date d'inscription
mardi 27 juin 2006
Statut
Membre
Dernière intervention
12 août 2010

Ah ben voila, maitenant ca marche beaucoup mieux.
Enfin je préfère le bon vieux crible, il me semble quand même plus performant (la preuve : l'algorythme le plus (ou peut être un des plus) puissant est basé sur le crible lui-même (crible d'Atkin)).
Messages postés
21
Date d'inscription
vendredi 13 octobre 2006
Statut
Membre
Dernière intervention
25 mars 2011
36
_MICHEL : Une idée, comme ça : en ligne 45, ajoute P[6]=P{7]=(unsigned long)0xffffffff;
Il faudrait aussi vérifier que Maxpile > 4 (à toi de voir ...)
Messages postés
77
Date d'inscription
mardi 27 juin 2006
Statut
Membre
Dernière intervention
12 août 2010

Non, décidement ça ne change rien, c'est très curieux.
Je vais essayer de chercher la faille, si je trouve le temps et la motivation (quel plaisir, la chasse aux bugs...).
En tout cas, j'espère que ce n'est pas mon PC, je l'ai depuis à peine trois mois !
En attendant de trouver le problème, bonne programmation.
Messages postés
21
Date d'inscription
vendredi 13 octobre 2006
Statut
Membre
Dernière intervention
25 mars 2011
36
_MICHEL : Mets "P = (unsigned long *)malloc((2+2*MAXPILE)*sizeof(unsigned long));" pour l'allocation !
On pourrait avoir un plantage en ligne 62! :((
Je n'ai jamais rencontré ce problème, mais quand n=MAXPILE-1 , on y calcule P[2*MAXPILE+1] et ça fait un peu trop dans la mesure où on alloué 2*MAXPILE ...

Quand même curieux que je n'aie jamais rencontré ce cas !!
Afficher les 19 commentaires