2nde ou TS Spé S.J (inspiré de B. Parisse) Sommes de diviseurs et nombres parfaits Le but de ce problème est de créer deux algorithmes qui permettent de dire si un nombre est parfait ou pas Un nombre entier naturel est parfait s’il est égal à la somme de ses diviseurs sauf lui-même 1ère partie : Vers la somme des diviseurs Quelle est l’instruction qui donne le reste de la division d’un entier n par un entier j ? _______________ Quel test doit on faire pour savoir si un nombre j est diviseur de n ? __________________________ Si on note s la variable locale qui donnera la somme des diviseurs de n tout au long de l’algorithme, que doit-on lui faire subir dès qu’on trouve un nouveau diviseur j de n ? _____________________________ Pour trouver tous les diviseurs de n autres que lui-même, quelles valeurs de j doit-on tester ? ________________ Pouvez-vous écrire un algorithme donnant la somme des diviseurs autre que lui-même d’un entier naturel n ? __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ Pouvez vous le traduire en langage Xcas en appelant la fonction : Sommediviseurs(n) puis tester –le après avoir tapé ALT P Sommediviseurs(n) :={ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ __________________________________________________________________________________________ _________________________________________________________________________________________ 2ème partie : Nombre parfait ? On aimerait que le programme nous dise si un nombre entier naturel donné est ou n’est pas parfait par l’écriture des mots vrai ou faux à la sortie du programme Compléter donc le programme suivant puis tester - le Parfait (n ) := { si Sommediviseurs (n) == n alors _______________________ ___________________________ ____________________________ ____________________________ 8 est-il parfait ? ______ Vérifier-le ___________________________________________________________ 28 est-il parfait ? _____Vérifier-le ____________________________________________________________ 496 est-il parfait ? ____________________________________ 2nde ou TS Spé S.J (inspiré de B. Parisse) Sommes de diviseurs et nombres parfaits Le but de ce problème est de créer deux algorithmes qui permettent de dire si un nombre est parfait ou pas Un nombre entier naturel est parfait s’il est égal à la somme de ses diviseurs sauf lui-même 1ère partie : Vers la somme des diviseurs Quelle est l’instruction qui donne le reste de la division d’un entier n par un entier j ? irem(n , j) Quel test doit on faire pour savoir si un nombre j est diviseur de n ? si le reste précédent est nul Si on note s la variable locale qui donnera la somme des diviseurs de n tout au long de l’algorithme, que doit-on lui faire subir dès qu’on trouve un nouveau diviseur j de n ? on doit lui additionner ce nouveau diviseur j Pour trouver tous les diviseurs de n autres que lui-même, quelles valeurs de j doit-on tester ? de 1 à n-1 Pouvez-vous écrire un algorithme donnant la somme des diviseurs autre que lui-même d’un entier naturel n ? Variable globale : entier n Variables locales : entiers naturels j, s et r Donner n Mettre 0 dans s Pour j de 1 à n-1 faire Si reste(n, j) = 0 Alors mettre s+j dans s Fin du si Fin du pour Ecrire s Pouvez vous le traduire en langage Xcas en appelant la fonction : Sommediviseurs(n) puis tester –le après avoir tapé ALT P Sommediviseurs(n) := { local j,s,r ; s :=0 ; pour j de 1 jusque n-1 faire r := irem(n , j) ; si r = 0 alors s := s + j ; fsi ; fpour ; retourne s ; } 2ème partie : Nombre parfait ? On aimerait que le programme nous dise si un nombre entier naturel donné est ou n’est pas parfait par l’écriture des mots vrai ou faux à la sortie du programme Compléter donc le programme suivant puis tester - le Pour le prof Parfait(n) :={ On peut aussi écrire si Sommediviseurs(n) == n Parfait(n) := Sommediviseurs (n)==n ; alors retourne vrai; sinon retourne faux ; Qui donne 1 ou 0 selon que le nombre fsi} :; est parfait ou pas 8 est-il parfait ? Non Vérifier-le 1 + 2 + 4 = 7 8 28 est-il parfait ? Oui Vérifier-le 1 + 2 + 7 + 4 + 14 = 28 496 est-il parfait ? Oui