Bonjour,

Je voudrais savoir ce que vous pensez du code suivant :
Code : 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
#include<stdio.h>
 
int main(){
	int A=100000;/*valeur limite jusqu'où chercher les nb premiers */
	int tab[A];   /*le tableau dans lequel on va appliquer le crible */
	int i=0,j=0,k=0; /*j écriture dans tab, i lecture, k index de prem*/
	int prem[A];     /*résultat du traitement*/
	for(j=0;j<A-1;j++) tab[j]=j+2;/*initialisation de tab */
	tab[j]=0;	/* on met zéro dans la derniere case de tab pour se repérer*/
	while (tab[0]!=0){  	/*tant que tab n'est pas vide*/
		j=0,i=0;		/*raz de j & de i*/
		prem[k]=tab[0]; /*on ajoute la premiere valeur de tab dans prem */
		while (tab[i]!=0){ /*jusqu'à  la fin de tab*/
			i++;		/*on incremente l'index de lecture de tab*/
			if (tab[i]%prem[k]!=0){ /*on déplace les non multiples de...*/
				tab[j]=tab[i];/*la première valeur de tab...*/
				j++;	/*en début de tableau*/
			}
		}
		tab[j]=0;/*mise à  0 de la dernière case*/
		k++;            /*incrémente l'index du tableau de résultat :prem*/
 
	}
/*écriture du résultat*/
	prem[k]=0;
	printf("Nombres premiers jusqu'à  %i\n",A);
	for(k=0;prem[k]!=0;k++) printf("%i ",prem[k]);
	printf("\n");
	return 0;
}
J'ai vu sur certains forum que d'autres le font avec un seul tableau...
Sinon je ne sais pas calculer la longueur d'un tableau en C cette fonction existe-t-elle ?
mon programme est il propre ?
Il s'exécute en moins de 3 secondes. Pour moi c'est pas mal vu que cette fonction ci en python fait la même chose en plus de trente :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
# -*- coding: utf-8 -*-
 
#Crible d'Eratosthène
def erat(lim):
  l=range(2,lim) 		#créé une liste l de 2 à  lim
  prem=[1] 			#crée une liste prem avec 1 
  while l:			#tant que l n'est pas vide faire
    prem.append(l[0])		#ajouter dans prem le premier nombre de l
    l=filter(lambda x:x%l[0],l)	#filtre de l tous les multiples du premier nombre de l
  return(prem)			#retourne prem
Merci.