Open justinchenmtl opened 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.
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 par6
ou28
) 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 dedata0
,data1
,data3
etdata5
sont traités sans délai d'expiration. Mais traiter avecdata2
a échoué, entre10 000
et14 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.