Bonjour,
Je voudrais savoir ce que vous pensez du code suivant :
J'ai vu sur certains forum que d'autres le font avec un seul tableau...
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; }
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 :
Merci.
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
Partager