BCPST 851 15 octobre 2012
Scilab – Correction du TD 4
Exercice 1
On considère la suite définie par u0=4 et ∀n∈N,un+1=u2
n+1.
1. À l’aide d’une boucle while, écrire un programme prenant en entrée un réel xet renvoyant
la valeur du premier terme de la suite qui soit supérieur ou égal à x.
x = input("valeur de x ?");
u=4;
while u < x
u = u^2 + 1;
end
disp(u)
Pour x =17, on doit obtenir 17 et pour x =1000 obtenir 84101.
2. Modifier votre programme pour qu’il renvoie également l’indice de ce terme.
Pour x =1000, on doit obtenir un=84101 et n =3.
x = input("valeur de x ?");
u=4;
n=0;
while u < x
u = u^2 + 1;
n = n + 1;
end
/ / a f f i c h a g e b as iq ue de u
disp("u=")
disp(u)
/ / a f f i c h a g e " ev o lue " de n
message = "n=" + s t r i n g (n);
disp(message )
Exercice 2
Écrire un programme prenant en entrée un entier (positif) net déterminant s’il est premier.
On procédera en testant tous les diviseurs possibles et on essaiera de ne pas faire trop d’opé-
rations inutiles. On rappelle qu’un entier est dit premier s’il a exactement 2 diviseurs. 1 n’est
donc pas premier, et les premiers nombres premiers sont 2, 3, 5, 7, 11.. .
Si n s’écrit pq, alors on a nécessairement p 6√n ou q 6√n. Cela signifie que si l’on a
testé tous les diviseurs possibles jusqu’à √n sans rien trouver, il est inutile de continuer.
n = input("Valeur de n ?");
borne = s q r t (n);
p = 2;
/ / p e s t l e d i v i s e u r p o t e n t i e l de n
while (modulo(n,p) ~= 0) & (p <= borne)
/ / t a n t que p ne d i v i s e pas n
/ / e t que p e s t i n f e r i e u r a s q r t ( n )
p = p+1;
/ / on p as s e au c a n d i d a t s u i v a n t
end
/ / Si l ’ on a d ep as se l a bor ne s an s t r o u v e r de
/ / d i v i s e u r , c ’ e s t que n e s t pr em ier ,
/ / s a u f s i n =1.
/ / Sinon , n n ’ e s t pas pr e m ie r .
i f (p > borne ) & (n > 1) then
disp( ’n est p remier ’)
else
disp("n n’’est pas premier")
end;
Exercice 3
On considère le programme suivant :
cible = floor(100* rand()) + 1:
essai = input(" Votre choix ? ") ;
while essai ~= cible
i f essai > cible then
disp("Trop grand.")
e ls e d isp (" Trop petit ")
end
essai = input(" Votre choix ?");
end
disp("Gagn é !")
1. Que fait ce programme ?
C’est un jeu de devinette dont la compréhension ne pose pas trop de problème avec les
commentaires présents dans l’énoncé. . .
2. Modifier ce programme pour que l’ordinateur choisisse le nombre à deviner entre 27 et
117 inclus.