TP 3 Objets

Page Home (contact) Retour TPs

Support de cours


Vous allez reprendre le TP précédent en utilisant le modèle objet. Vous travaillez toujours avec des entiers strictement positifs (0 non compris) représentés par le type primitif long.


Exercice 1 : pour s'échauffer...

Dans le TP précédent le code pour savoir si un nombre entier b divisait un nombre entier a était :
Division.divisible(a,b)

Dans ce TP il va ressembler à :
a.estDisiblePar(b)

Ecrivez une classe Entier qui représente les nombres entiers de telle sorte que a (et éventuellement b) y appartiennent et ajoutez-y une méthode estDivisiblePar. Vous donnerez 2 méthodes : une qui prend en paramètre un long et une autre qui prend en paramètre un Entier. Testez avec une classe TestEntier à part qui contient une méthode main. Vous ajouterez à la classe Entier les méthodes qui vous sembleront utiles pour pouvoir faire le test (par exemple toString(), un accesseur...).

Correction

Entier.java
TestEntier


Exercice 2 : diviseurs d'un nombre

Ajoutez une méthode diviseurs à la classe Entier qui renvoie un tableau qui contient tous les diviseurs du nombre (y compris 1 et lui-même). Le tableau renvoyé doit être complètement rempli avec les diviseurs.

Le nombre de diviseurs d'un nombre croît très lentement ; vous pouvez considérer que tous les nombres représentés par le type primitif long ont moins de 1000 diviseurs. Vous garderez les diviseurs dans un tableau pas complètement rempli puis, à la fin, vous créerez un autre tableau qui ne contiendra que les diviseurs, et qui sera renvoyé par la méthode.

Testez avec une classe TestDiviseurs. Testez en particulier avec les nombres suivants : 1, 2, 7, 25, 36.

Correction :

Entier.java
TestDiviseurs.java


Exercice 3 : nombres premiers

Ajoutez une méthode estPremier à la classe Entier qui indiquera si le nombre est un nombre premier. Utilisez au maximum le code déjà écrit.

Testez avec une classe TestPremier qui affiche les 20 premiers nombres premiers : 2, 3, 5, 7,... Vous devriez trouver 71 comme dernier nombre.

Correction :

Entier.java
TestPremier.java

Exercice 4 : nombres parfaits

Un nombre est parfait s'il est égal à la somme de ses diviseurs stricts (1 compris mais non compris évidemment lui-même). Par exemple, 6 est parfait car 6 = 1 + 2 + 3. 28 aussi est parfait car 28 = 1 + 2 + 4 + 7 + 14. 8 n'est pas parfait car 1 + 2 + 4 = 7 est différent de 8. Pour vos tests, sachez que 496, 8128 et 8 589 869 056 sont parfaits.

Ajoutez dans la classe Entier une méthode estParfait qui indique si un nombre est parfait. Testez en faisant afficher tous les nombres parfaits inférieurs à 10000 et en vérifiant que 8 589 869 056 est parfait.

Correction :

Entier.java
TestParfait.java

Retour TPs

Modifié le 21/01/11