Bonjour j'ai besoin d'aide pour mon exo , je ne comprends pas . Voici un algorithme. Fonction mystere(n)k ← 2 Tant que k ne divise pas nk ← k + 1 Fin TantQueSi
Question
Voici un algorithme.
Fonction mystere(n)k ← 2
Tant que k ne divise pas nk ← k + 1
Fin TantQueSi k = n alors renvoyer "vrai" sinon renvoyer "faux"
J’ai testé et mystere(131 071) me renvoie "vrai". Que cela signifie-t-il pour l’entier 131 071 ? Expliquer en argumentant de manière claire et compréhensible.
1 Réponse
-
1. Réponse emilie2458
Réponse:
Alors c'est très simple je t'explique :
Juste pour commencer, si k divise n, ça veut dire que n÷k = un nombre ENTIER
Ta fonction mystère prend un chiffre. Nous on va faire un exemple, par exemple, n=25
Tu sais aussi que k=2
Tant que k ne divise pas n, tu on fait k=k+1 et on réessaie.
Pour notre exemple, 2 ne divise pas 25 (on obtient un nombre décimal donc c'est pas bon)
Donc on fait k = k +1 = 2+1 = 3
On recommence : 3 ne divise pas 25, donc on continue
k = 3+1 = 4
4 ne divise pas 25 donc on recommence
k = 4+1 = 5
Là, 5 divisé 25 ! (25÷5 = 5)
Donc la boucle "tant que" s'arrête.
Ensuite ta fonction regarde si k=n et si c'est le cas, elle dit "vrai", sinon elle dit "faux"
Dans notre exemple, k = 5 et n=25
Donc k =/= n
Donc la fonction va envoyer "FAUX"
Donc si tu remarques, la fonction envoie "vrai" quand le premier diviseur de n qu'elle trouve est n.
Donc elle te renvoie "vrai" pour les chiffres qui ont pour seuls diviseurs eux-mêmes ! Donc les chiffres premiers.
En écrivant n=131071, l'algorithme à dit "vrai".
Donc le plus petit diviseur de 131 071 que la fonction à trouvé est lui-même, donc c'est un nombre premier.