Exercice en langage C

Fermé
oudadmo Messages postés 1 Date d'inscription jeudi 16 mai 2013 Statut Membre Dernière intervention 17 mai 2013 - 17 mai 2013 à 01:00
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 23 mai 2013 à 21:29
Bonjour,

Ecrire un programme qui permet de determiner tous les nombres premiers inferieurs ou égaux à un entier naturel n

A voir également:

2 réponses

Célien Messages postés 5729 Date d'inscription jeudi 8 mai 2008 Statut Membre Dernière intervention 9 septembre 2021 1 993
17 mai 2013 à 05:03
Salut,

On ne va pas faire l'exercice à ta place, à lire : Demander de l'aide pour vos exercices sur CCM. Si tu as séché les cours, rattrapage : Cours de C.
0
nar6du14 Messages postés 459 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 7 décembre 2013 64
23 mai 2013 à 01:55
l'indication c'est de diviser ce nombre par tous les nombres compris entre 2 et la moitié de ce nombre

exemple comment savoir que 24 n'est pas premier???

faut diviser 24 par tous les nombres compris entre 2 et la moitié de 24 c'est à dire entre 2 et 12 si un seul nombre pris dans cet intervalle divise 24 alors 24 n'est pas premier. C'est le cas vu que 2 est un diviseur de 24.

Bonne chance pour la suite
0
evilfalcon Messages postés 58 Date d'inscription samedi 15 décembre 2012 Statut Membre Dernière intervention 10 novembre 2015
23 mai 2013 à 02:18
oui mais tu fais des opération pour rien!
et l'exercice et très simple en fait, à partir du moment que tu connaisses:
les tableaux,
le modulo,
et une bonne définition des nombres premiers!

je m'explique: un nombreux premier n'est divisible que par un et par lui même!(def de base)
un propriété: tous les chiffres non premier sont un combinaison des chiffres premiers!
donc voilà le raisonnement que je te conseil:
tu créés un tableau: tu supposes 1 et 2 premier (logique d'après la définition précédente)
tu les rentes dans ton tableau!
ensuite, tu prends le chiffre suivant et tu effectue un modulo avec les nombres premiers précédent (sauf 1)que tu as trouvé, si un obtiens un résultat égal à 0 il n'est par premier!

un exemple sera plus facile à comprendre:
imaginons que je suis arriver au chiffre 14.
dans mon tableau des nombres premier, j'ai 1,2,3,5,7,11,13.
le chiffre suivant 15
15|2=1
15!3=0
15 n'est pas premier!
ensuite 16:
16!2 = 0
pas premier
et je continue 17
17!2= 1
17|3=2
17|5=2
17|7=3
17|11=6
17|13=4
donc 17 est premier!
et ainsi de suite!

jusqu'à n
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
23 mai 2013 à 21:29
@nar6du14,
l'indication c'est de diviser ce nombre par tous les nombres compris entre 2 et la moitié de ce nombre
Tu peux même aller jusque racine du nombre. Par exemple au lieu d'aller jusqu'à 12, tu peux aller jusque 5. Imagine les itérations d'économiser pour les grands nombres.
Tu peux encore économiser encore en faisant des incréments de 2.

@evilfalcon,
tu supposes 1 et 2 premier (logique d'après la définition précédente)
Que nenni ! 1 n'est pas premier. Ta définition du nombre premier est incomplète. 1 ne possède qu'un seul diviseur (1). Il n'est donc pas premier. Donc à ne pas mettre dans le tableau.

avec les nombres premiers précédent (sauf 1)
Du coup, pas besoin d'exclure le 1 avec la correction précédente.

Pour info, il s'agit du crible d'Eratosthène : https://fr.wikipedia.org/wiki/Crible_d%27%C3%89ratosth%C3%A8ne
On peut d'ailleurs plus performant encore avec le crible d'Atkin (même si plus complexe à mettre en oeuvre) :https://fr.wikipedia.org/wiki/Crible_d%27Atkin

Cdlt,
0