|
Bas de page | |
---|---|
Auteur | Sujet : C++ calcul d'un nombre prmier |
Publicité | Posté le 10-12-2018 à 09:21:09 |
Erlum | Soit n le nombre que t'intéresse, l'approche simple consiste à examiner le résultat de n modulo d. Vu ta date de naissance j'imagine que tu dois débuter des études d'info, donc si t'es pas encore familier avec le concept : modulo renvoie le reste d'une division euclidienne, par exemple, 5 mod 2, renvoie 1, car 5/2 = 2 reste 1. Si tu trouves un reste nul, c'est que d est un diviseur de n, et donc que n n'est pas premier. En bref, tu pars du principe que n est premier et défini donc un booléen sur true. Tu créés une boucle sur d, allant de 2 à la racine carrée de n (inutile d'aller plus loin, si ton nombre n'est pas premier, tu trouveras un diviseur dans l'intervalle allant de 2 à la racine de ce nombre incluse), et tu regardes le résultat de mod. Si à un moment ça te retourne 0, c'est que n n'est pas premier, du coup tu peux définir ton booléen sur false et sortir immédiatement de ta boucle. Si à la fin de ta boucle tu n'as jamais eu 0 comme résultat, ton booléen est déjà sur true, tu peux retourner le résultat. Message cité 1 fois Message édité par Erlum le 10-12-2018 à 10:08:18 |
sulfuross |
Message édité par sulfuross le 10-12-2018 à 11:07:46 |
Erlum | Quel est l'intérêt de ton if(i>val/2) ? Et pourquoi vouloir mémoriser le nombre de diviseurs ? Le résultat est le même mais ton code devrait refléter ton intention. Et attention à ta condition de sortie de boucle, tu dois aller jusqu'à la racine incluse. Par exemple, pour savoir que 25 n'est pas premier, tu es obligé d'aller jusqu'à sa racine, 5.
Version avec boucle for, plus lisible à mon opinion.
Message cité 1 fois Message édité par Erlum le 10-12-2018 à 11:23:02 |
sulfuross |
|
sulfuross |
|
Erlum |
|