Vous êtes sur la page 1sur 3

Premiers pas et structures de contrle

Calcul formel TP 1& 2


Toutes les questions peuvent tre traites avec laide de Sage, sauf
lorsque lon vous demande de faire une preuve la main !

1. Nombre de chiffres dun entier


Le nombre de chiffres dun entier N > 0 est lentier k N tel que
10k1 6 N < 10k .
Par exemple pour N = 1234 on a 103 6 1234 < 104 et N a bien 4 chiffres.
1. laide du logarithme dcimal et de la partie entire, calculer le nombre de chiffres k dun entier N .
Fonctions utiles : le logarithme dcimal log(x,10) ; la fonction partie entire floor().
2. On considre le dveloppement de lexpression (x + y)n .
Par exemple n = 5 est le plus petit entier tel que lun des coefficients ait au moins 2 dcimales :
(x + y)5 = x 5 + 5x 4 y + 10x 3 y 2 + 10x 2 y 3 + 5x y 4 + y 5 .
nigme. Trouver le plus petit entier n tel que lun des coefficients du dveloppement de (x + y)n ait au
moins 10 chiffres.
Fonctions utiles : expand(), coefficient() : par exemple si P = 3*x^2*y + 7*x*y^2 + y^3 alors
P.coefficient(x*y^2) renvoie 7.

2. Constante de Champernowne
La constante de Champernowne est un rel dont les dcimales sont formes de tous les entiers 1, 2, 3, . . .
crits dans cet ordre :
C = 0 , 1 2 3 4 5 6 7 8 9 10 11 12 . . .
1. On note C1 = 0, 1 ; C2 = 0, 1 2 ; C3 = 0, 1 2 3 ; etc. Dfinir le nombre C99 qui retourne la valeur approche
de C, sous la forme dun nombre virgule, prenant en compte les entiers de 1 99.
Indications. Construire ce nombre sous la forme dune somme.
Fonctions utiles : laffichage numrique dun dcimal n() (par exemple pi.n(digits=50) affiche 50
dcimales de ).

PREMIERS PAS ET STRUCTURES DE CONTRLE

4. LE NOMBRE DOR

2. On souhaite extraire les dcimales de C comprises entre les rangs a et b. Par exemple les dcimales
extraites entre les rangs a = 8 et b = 11 forment lentier 8910.
nigme. Quel est lentier ( 6 chiffres) form par les dcimales extraites entre les rangs a = 100 et
b = 105 ?
Fonctions utiles :
la partie entire dun rel floor(),
la fonction modulo % (par exemple 13%5 renvoie 3).

3. Nombres pseudo-premiers dEuler


On dit quun entier impair p > 3 vrifie le n-test dEuler si
n

p1
2

1 (mod p),

o n est un nombre entier fix. Le petit thorme de Fermat affirme : si p est un nombre premier suprieur
ou gal 3, alors p vrifie le n-test dEuler, quelque soit n non divisible par p. Dans la suite p > 3 est un
entier impair quelconque.
1. crire une fonction test_euler(n,p) qui renvoie Vraie (True) si p vrifie le n-test dEuler et Faux
(False) sinon.
2. Vrifier que 217 vrifie le 5-test dEuler mais nest pourtant pas un nombre premier.
3. nigme. Trouver le plus petit entier impair p > 3 qui vrifie toutes les conditions suivantes :
p vrifie le 5-test dEuler,
p vrifie le 7-test dEuler,
et pourtant p nest pas un nombre premier.
Fonction utile : is_prime()

4. Le nombre dor
Le nombre dor est la proportion qui permet de diviser esthtiquement un segment en deux parties non
gales :
a+b
a

La proportion vrifie :

a
a+b
=
b
a
Autrement dit la grande longueur divise par la petite longueur est gale la longueur totale divise par
la grande longueur .
On note cette proportion le nombre dor :
a
a+b
= =
.
b
a
1. Montrer la main que vrifie lquation :
2 1 = 0.
En utilisant Sage, en dduire que

p
1+ 5
=
2

PREMIERS PAS ET STRUCTURES DE CONTRLE

4. LE NOMBRE DOR

et en donner une approximation numrique.


Fonctions utiles : solve(), n()
2. Dessiner la spirale dor dquation polaire
r( ) = 2 / .
Fonctions utiles : polar_plot()
1
1
1
3. On dfinit la suite u0 = 1, u1 = 1 + , u2 = 1 +
, u3 = 1 + 1 ,. . . et plus gnralement :
1
1
1+ 1
1
1+ 1

1
un+1 = 1 +
pour
n > 0.
un
(a) Calculer les premiers termes de la suite et leurs valeurs numriques approches. Quelle semble tre
la limite ?
(b) Prouver la main votre conjecture !
4. On souhaite montrer que pour tout n positif, il existe deux suites an et bn dentiers telles que n = an + bn .
Par exemple 5 =

p
5 5
2

11
2

= 5 + 3, donc a5 = 5 et b5 = 3.

(a) Vrifier exprimentalement ce rsultat pour les premires valeurs de n. Par exemple
(b) nigme. Pour n = 20, 20 = a20 + b20 . Que vaut b20 ?
(c) Montrer la main lassertion par rcurrence (utiliser la relation 2 1 = 0).
Fonction utile : expand()