Recherche des nombres parfaits

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 212 fois - Téléchargée 34 fois

Contenu du snippet

ce programme affiche les nombres parfaits compris entre 1 et 10 000.

Source / Exemple :


#include <stdio.h>

#define nmax 10000

void main()
{
int n, somme_diviseur, diviseur;
for(n=1; n<=nmax; n++)
	{
	somme_diviseur=0;
	for(diviseur=1; diviseur<=n/2; diviseur++)
		if(n%diviseur==0)
			somme_diviseur+=diviseur;
	if(somme_diviseur==n)
		printf("%d est un nombre parfait\n", n);
	}
}

A voir également

Ajouter un commentaire Commentaires
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
4 sept. 2004 à 15:34
bon, je ne te suis pas mais c'est pas grave, tu dois avoir raison, je vias voir si on peut exploiter ça facilement...
cruchacode Messages postés 11 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 22 février 2012
4 sept. 2004 à 15:29
Sorry, je m'explique plus clairement : ce n'est pas l'exposant de 2 qui est le facteur premier, mais le facteur premier qui est la somme des puissances de 2 de 0 à l'exp max du facteur 2

Exemple :
3 2^0 + 2^1, 3 est premier> 2^1 * 3 est parfait
7 = 3 + 2^2, est premier 2^2 * 7 est parfait

Et j'insiste, le nombre premier doit être la somme de 1, 2, ... sans "trous" jusqu'au facteur 2^k

Si tu regardes la démonstration, tu comprendras sans doute prourquoi de tels nombres sont NECESSAIREMENT parfaits...

2 termes dont l'un premier, l'autre une puissance (n) de premier ==> nombre de diviseurs propres = n + n-1 + 1
soit 2 n termes.

Etudions les termes,


Nombre premier = (2^(n+1) -1)
Nombre pair alors choisi = 2^n

Diviseurs :
Premier
(2^(n+1) -1)
Puissances de 2 :
(2^(n+1) -1)
Produits des puissances et du premier :
(2^(n) -1) * (2^(n+1) -1)

...mais on ne doit pas compter 2 fois le premier (2^0 = 1..)

Somme des div
(2^(n+1) -1) (1 + (2^(n) -1))
(2^(n+1) -1) * ((2^(n))

La somme des div est donc bien égale au nombre de départ
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
4 sept. 2004 à 12:55
16 = 2^3 * 2 et 2 = 2^1

voila je crois que comme 3 et 2 sont premiers alros 16 est parfait ...
16 != 2 +8 +4 +1

a moins que je ne me trompe 16 n'a pas d'autres diviseurs donc il n'eest pas parfait pourtant, selon ta technique, il dvrait l'être...
cruchacode Messages postés 11 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 22 février 2012
4 sept. 2004 à 12:37
Tu peux programmer une recherche des nombres parfaits en utilisant ce thm... tu verras que tu trouve exactement les nombres parfaits et eux seuls...

En réfléchissant un peu tu verras aussi combien ce thm est beau !!
chercher un nombre premier somme des puissances de 2 de 0 à n ==> construire un nombre parfait...

De tels nombres premiers sont plutôt rares... 3 en dessous de 1000 et les choses vont en se raréfiant
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 42
4 sept. 2004 à 12:32
mais la tu peux ariver a nimporte quel nombre pair...
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.