Previous Up Next

Environnement de programmation, exemples

Bibliothèques et code fourni

Comme déjà dit dans le sujet vous emploierez les classes BigInteger (grands nombres) et BitSet (champs de bits). En outre voici une classe Arith qui donne quelques méthodes bien utiles. Les méthodes qui vous intéressent sont les suivantes :

De l’importance de tester son programme (et de respecter l’interface demandée)

Votre programme sera testé par une procédure automatique. Mon travail sera donc grandement facilité si vous respectez l’interface définie dans l’énoncé, qui est particulièrement simple. Votre programme prend en argument un nombre n adapté et produit une factorisation de n, sous la forme de deux nombres séparés par «  *  ». Par exemple :

# java Qs 350243405507562291174415825999
75576435361433 * 4634293795844903

Par ailleurs, le test en cours de développement est une démarche incontournable de la programmation. Il permet d’une part de contrôler la correction du programme (dans une certaine mesure), mais aussi, si les tests sont appliqués systématiquement après chaque modification majeure, de contrôler que d’éventuelles améliorations sont bien des optimisations.

Exemples

Voici donc des exemples de factorisation dont vous pourrez vous servir :

n                   RésultatTemps                   Produit du crible
T20                   650556341 * 285403075992s                   T20.txt
T30                   4634293795844903 * 755764353614334s                   T30.txt
T40                   72694838627523822433 * 7849222390952890035125s                   T40.txt
F7                   5704689200685129054721 * 5964958912749721730s                   F7.txt
T45                   15877128246765026029153 * 461164928761839693060472min                   T45.txt
T50                                        T50.txt
T55                                        T55.txt
T60                   2188226993578711982382919035585611 * 3090594703845250608889466694h30                   T60.txt
T65                                        T65.txt
T70                                        T70.txt

Les temps sont des ordres de grandeur (sur une machine 1Ghz). On peut accepter de faire moins bien, on peut aussi faire mieux !

Vous noterez que pour chaque exemple, outre la factorisation, est fourni un fichier produit du crible. Ce fichier permet de commencer le développement de la dernière étape de la factorisation (algèbre linéraire + fabrication et exploitation des congruences X2 = Y2 (mod n )) avant que d’avoir terminé le crible. Le format de ce fichier « produit du crible » est le suivant :


Previous Up Next