Le caract`ere des nombres - la maison de serge et liyun

Le caract`ere des nombres
f´evrier 2009
Ils sont fous ces math´ematiciens !
Dans l’antiquit´e, un certains nombres de math´ematiciens (grecs, souvent)
jouaient beaucoup avec les nombres entiers. Ils les examinaient, les inspectaient
et leur trouvaient toute sorte de propri´et´es sympathiques.
Par exemple vous apprendrez que 7 est d´eficient, 220 et 284 sont sociables,
18 est abondant et 496 est parfait
1 Les diviseurs (ils ne sont pas n´es d’hier)
Tout nombre entier positif (dans N) poss`ede des diviseurs. Au pire il est
divisible par 1 et par lui-mˆeme (auqeul cas il est premier). Mais la plupart en
ont un peu plus.
Exemple 1: les diviseurs de 8 sont 1, 2, 4 et 8
1. Comment savoir si un nombre pen divise un autre n?
Aide: pmodulo, ¸ca vous rappelle quelque chose ?
2. Compl´etez la fonction suivante qui stocke dans d %T (respectivement %F)
si pdivise (resp. ne divise pas) n:
function d=divise(p,n)
// juste une ligne pour vous
// avec un pmodulo quelque part
endfunction
3. ´
Ecrire un bout de code qui affiche `a l’´ecran tous les diviseurs d’un nombre
(42 par exemple)
Aide: pour afficher l’entier n, vous utiliserez printf("%i ",n)
4. compl´etez la fonction suivante qui stocke dans le tableau diviseurs tous
les diviseurs de n
function diviseurs=quels_diviseurs(n)
diviseurs = [ 1 ] ;
// quels sont les autres diviseurs ?
// utilisez la fonction divise
endfunction
5. gardez cette fonction bien au chaud, elle est cruciale pour la suite !
1
Correction
function d=divise(p,n)
d=(pmodulo(n,p) == 0 )
endfunction
function diviseurs=quels_diviseurs(n)
diviseurs = [ 1 ] ;
j=2;
for i=2:n
if divise(i,n)
diviseurs(j) = i
j=j+1
end
end
endfunction
v=quels_diviseurs(42)
for s=v
printf("%i ",s)
end
2 La somme
Ce qui va nous ineresser dans les exos suivants, c’est la somme des diviseurs
d’un nombre. On va donc compl´eter la fonction suivante
function s=somme_diviseurs(n)
// utilisons quels_diviseurs
endfunction
En fait on va s’ineresser `a la somme des diviseurs strict d’un nombre, ce
qui exclu ledit nombre.
Exemple 2: les diviseurs de 8 sont 1, 2, 4 et 8 les diviseurs stricts de 8 sont 1,
2 et 4
Ajustez le code pr´ec´edent pour qu’il calcul ´
Ecrivez la fonction somme diviseurs stricts
qui ressemble furieusement `a la pr´ec´edente.
1. Combien vaut la somme des diviseurs stricts de 8128 ?
2. Combien vaut la somme des diviseurs stricts de 220 ?
3. Combien vaut la somme des diviseurs stricts de 284 ?
Correction
function s=somme_diviseurs(n)
s=0;
for i=n
s=s+n
end
2
//s=sum(quels_diviseurs(n))
endfunction
function s=somme_diviseurs_stricts(n)
s=somme_diviseurs(n)-n
endfunction
n1=somme_diviseurs_stricts(8128)
n2=somme_diviseurs_stricts(220)
n3=somme_diviseurs_stricts(284)
printf("%i %i %i\n",n1,n2,n3)
3 Les caract`eres
Je vais vous donner quelques astuces pour connaˆıtre le caract`ere d’un nombre
un nombre est parfait s’il est ´egal `a la somme de ses diviseurs stricts ;
un nombre est eficient s’il est strictement sup´erieur `a la somme de ses
diviseurs stricts ;
un nombre est abondant s’il est strictement inf´erieur `a la somme de ses
diviseurs stricts.
1. ´ecrire un bout de code qui teste si un nombre est parfait,d´eficient ou
abondant
2. testez l`a sur les nombres 8128 220 et 284 (encore eux !)
Correction
function quel_caractere(n)
s=somme_diviseurs_stricts(n);
msg=""
if s == n
msg="parfait"
elseif s > n
msg="abondant"
else
msg="d´eficient"
end
printf("%i est %s\n",n,msg)
endfunction
quel_caractere(284)
4 Les amis
Deux nombres sont amis si la somme des diviseurs stricts de l’un est ´egal `a
l’autre et r´eciproquement. Testez si 220 et 284 sont amis. Mettre ¸ca dans une
fonction qui dit si deux nombres sont amis !
3
Correction
function amis(n,p)
s=somme_diviseurs_stricts(n);
t=somme_diviseurs_stricts(p);
msg="ne sont pas amis"
if (s==p) & ( t == n )
msg="sont amis"
end
printf("%i et %i %s\n",n,p,msg)
endfunction
amis(220,284)
4
1 / 4 100%

Le caract`ere des nombres - la maison de serge et liyun

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !