4 réponses
Bonsoir,
Dans tes deux codes tu as
Tu devrais regarder cet article, pour comprendre comment fonctionne l'algorithme avant de commencer à le coder :
http://fr.wikipedia.org/wiki/Crible_d'Ératosthène
Dans tes deux codes tu as
if(Tab[i]%j==0)or cela ne correspond pas du tout au crible d'Ératosthène qui cherche les multiples, pas les diviseurs !
Tu devrais regarder cet article, pour comprendre comment fonctionne l'algorithme avant de commencer à le coder :
http://fr.wikipedia.org/wiki/Crible_d'Ératosthène
Justement, je m'inspire de cet article depuis le début mais je ne parviens pas à saisir l'idée.. :/
Pour moi, le 2éme code devrait marcher mais il m'affiche 2/3/5/7/9/11/...etc
Benjamim
Pour moi, le 2éme code devrait marcher mais il m'affiche 2/3/5/7/9/11/...etc
Benjamim
La crible d'Ératosthène se base sur un principe d'élimination, ce qui correspond aux nombres barrés sur l'image animée.
Dans ton code où apparaissent les nombres que tu as explorés ou non ?
De plus je m'interroge quant au type de ton tableau, le but étant d'indiquer si un nombre est premier, il n'y a que deux possibilités : vrai ou faux. Alors pourquoi avoir utilisé un tableau d'entiers, là où clairement on devrait avoir des booléens ?
Voici un bon début et une bonne fin pour ton code, je te laisse voir le milieu...
Dans ton code où apparaissent les nombres que tu as explorés ou non ?
De plus je m'interroge quant au type de ton tableau, le but étant d'indiquer si un nombre est premier, il n'y a que deux possibilités : vrai ou faux. Alors pourquoi avoir utilisé un tableau d'entiers, là où clairement on devrait avoir des booléens ?
Voici un bon début et une bonne fin pour ton code, je te laisse voir le milieu...
int n = sc.nextInt(); boolean[] prime = new boolean[n]; boolean[] explore = new boolean[n]; // ... for (int i=0; i<n; i++) if (prime[i]) System.out.println(i+" est premier");