Si vous voulez directement vous amusez, il suffit de rentrer du code de la même manière que l'on a fait dans le main() pour tester nos fonctions. Notre professeur nous fournissait un header .h fint contenant des fonctions avec leur signature et leur(s) valeur(s) d'entrée(s). A partir de cela, nous devions construire une structure de données capable de manipuler de grands entiers avec ces mêmes fonctions données et créer des opérateurs '+','-','*', '/' et '%' fonctionnant avec le type fint.
Nous avons essayé de gérer un facteur par un dictionnaire. En effet, celle-ci se construit de la manière suivante : pair<int,int> ( entier_multiple, puissance )
où entier_multiple représentait un nombre premier et puissance étant le nombre de fois l'entier fint était divisible par ce nombre.
Bien entendu, pour que l'entier_multiple
soit visible lors de la factorisation, il faut que celui-ci soit non-nul, sinon il ne sera tout simplement pas présent, quelque soit les opérations qui seront effectués ensuite (Exception pour le cas où fint = 1).
int_t
est défini dans le fichier fint.h, avec le type unsigned long int
.
- créer un fint non-vide depuis un entier (
fint( int_t n )
). Celui-ci sera factorisé jusqu'à ce que tout les nombres premiers multiples ainsi que leur puissance associée soit trouvée. - créer un fint non-vide depuis deux listes d'entier (
fint( const initializer_list<int_t>& lf, const initializer_list<int_t>& lm )
). Le dictionnaire prendra les clés des éléments de la liste lf et comme valeur des clés les éléments de la liste lm. Le premier élément de lf est inséré comme clé du premier élément de lm et ainsi de suite. Il y a une vérification pour que la taille des 2 listes soient égales. - insérer un élément p dans le dictionnaire (
inserer_element(pair<int,int> p)
). - rechercher si un élément de type
int
appartient au dictionnaire (rechercher(int c)
). - si un élément de type
fint
est premier ou non (is_prime()
). - Comparer ou modifier deux fint a et b à l'aide des opérandes (
'+', '-', '*', '/', '%', '==', '!='
). - Trouver le plus petit commun multiple de a et b (
lcm(const fint& a, const fint& b)
). - Trouver le plus grand diviseur commun de a et b (
gcd(const fint& a, const fint& b)
).