cs_csluikidikilest
Messages postés12Date d'inscriptionmercredi 16 janvier 2002StatutMembreDernière intervention18 juillet 2004 4 oct. 2004 à 22:39
petit problème avec du code HTML interprété : > = greater than soit plus grand que ce qui donne : i >= 1.
Super_Mat
Messages postés37Date d'inscriptionjeudi 2 septembre 2004StatutMembreDernière intervention31 août 2005 4 oct. 2004 à 19:58
En plus, il n'y a que 8 nombres parfaits inférieurs à mille trillions. Comme le prog utilise les int (même avec unsigned int, qui permet pourtant de multiplier le nombre maximum par 2), il suffit donc de taper les 8 nombres parfaits dans une liste et de comparer N à la liste :
6
28
496
8 128
33 550 336
8 589 869 056
137 438 691 328
2 305 843 008 139 952 128
Evidemment, si on pouvait traiter des nombres aussi grands qu'on veut, ca ne résoud pas le problème ...
cs_csluikidikilest
Messages postés12Date d'inscriptionmercredi 16 janvier 2002StatutMembreDernière intervention18 juillet 2004 23 nov. 2003 à 23:06
la définition est juste mais l'algo ne fonctionne pas. En effet 6 est un nombre parfait pourant le logiciel le définit comme non parfait (idem avec 28, 496, 8128 et 33550336 - soit les cinq premiers nombres parfait).
Il faut donc remplacer la boucle For par ce code ci:
for (i=N-1;i>=1;i-=1)
{
if (N%i==0)
{
S += i;
}
}
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 23 nov. 2003 à 12:42
suffit de voir le source, aparament c'est un nombre qui est egal a la somme de ses diviseurs(exepte 1)
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 22 nov. 2003 à 22:20
c'est quoi un nombre parfait ? (je m'en souviens plus).
4 oct. 2004 à 22:39
4 oct. 2004 à 19:58
6
28
496
8 128
33 550 336
8 589 869 056
137 438 691 328
2 305 843 008 139 952 128
Evidemment, si on pouvait traiter des nombres aussi grands qu'on veut, ca ne résoud pas le problème ...
23 nov. 2003 à 23:06
Il faut donc remplacer la boucle For par ce code ci:
for (i=N-1;i>=1;i-=1)
{
if (N%i==0)
{
S += i;
}
}
23 nov. 2003 à 12:42
22 nov. 2003 à 22:20