justinchenmtl / inf3135-h2019-tp2

Travail Pratique2
0 stars 0 forks source link

Calculer le nombre parfait par le nombre premier de Mersenne #5

Open justinchenmtl opened 5 years ago

justinchenmtl commented 5 years ago

Sur la base du projet TP1, j'ai optimisé le programme pour trouver des nombres parfaits, tels que l'ajout de restrictions (le nombre parfait se terminant par 6 ou 28) et pour réduire la plage de recherche du diviseur. Celles-ci améliorent évidemment la vitesse d'exécution du programme et les fichiers de data0, data1, data3 et data5 sont traités sans délai d'expiration. Mais traiter avec data2 a échoué, entre 10 000 et 14 milliards. Le temps pour trouver le nombre parfait est très lent, car la partition euclidienne est utilisée pour voir si un nombre est divisé par un autre.

justinchenmtl commented 5 years ago

Selon la relation entre les nombres parfaits et les nombres premiers de Mersenne, les nombres premiers peuvent produire des nombres parfaits. Ayant un prime de Mersenne, le n est connu. Avec ce n, nous trouvons un nombre parfait en utilisant la formule:

(2^(n-1)) ((2^n)-1).

De cette manière, nous avons seulement besoin de trouver le nombre premier Mersenne et d'obtenir le nombre parfait directement, sans avoir à parcourir les numéros de vérification un par un, ce qui permettra de gagner beaucoup de temps.