Exercice en langage C

oudadmo Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   1 993
 
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   Statut Membre Dernière intervention   64
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
@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