0/5 (25 avis)
Vue 7 772 fois - Téléchargée 295 fois
#include<stdio.h> void sieve(int L,int U) { int i,j,d; d=U-L+1; char flag[d]; for (i=0;i<d;i++) flag[i]=1; /* par défaut tout est marqué comme premier */ for (i=(L%2!=0);i<d;i+=2) flag[i]=0; /*on élimine les multiples des nombres premiers de 3 jusqua sqrt(U) */ for (i=3;i*i<=U;i+=2) { if (i>L && !flag[i-L]) continue; /* On choisit le facteur qu'on va éliminer ses multiples */ j=L/i*i; if (j<L) j+=i; if (j==i) j+=i; /* il faut que j soit différent de i */ j-=L; /* On décale les indices */ for (;j<d;j+=i) flag[j]=0; } if (L<=1) flag[1-L]=0; if (L<=2) flag[2-L]=1; for (i=0;i<d;i++) if (flag[i]) printf("%d\n",L+i); } int main(){ int m,n; while(scanf("%d%d",&m,&n) == 2){ sieve(m,n); printf("\n"); } return 0; }
19 avril 2007 à 18:55
char flag[d]; ça compile ???
19 avril 2007 à 19:28
19 avril 2007 à 19:35
19 avril 2007 à 19:54
19 avril 2007 à 20:01
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!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.