Rappel: Un nombre parfait est un nombres egal à la somme de SES diviseurs propres.
Exemple : 6=1+2+3 28 = 1+2+4+7+14
Cette algo. permet de calculer tout les nombres parfaits paires.
En effet Euler a démontré que tout nombre parfait pair est de la forme 2^n * (2^(n+1) - 1)
où 2^(n+1) -1 est un nombre premier.
Source / Exemple :
'Créer une CommandButton
' Propriété :
' Name : cmdChercher
' Caption :"Chercher"
'Créer un TextBox
' Propriété :
' Name : txtnbrParfait
' Multiligne : True
' Text : Rien du tout
' Et mettez le code suivant :
Private Sub cmdChercher_Click()
Static OnOff As Boolean
Static n As Long
On Error GoTo Erreur
If n = 0 Then n = 1
If cmdChercher.Caption = "Chercher" Then
cmdChercher.Caption = "Pause"
OnOff = True
Do
If IsPrime(2 ^ (n + 1) - 1) Then _
txtNbrParfait = txtNbrParfait & vbCrLf & 2 ^ n * (2 ^ (n + 1) - 1)
DoEvents
n = n + 1
Loop Until OnOff = False Or InStr(1, Str(n), "E")
Else
cmdChercher.Caption = "Chercher"
OnOff = False
End If
Exit Sub
Erreur:
MsgBox "Malheureusement, la précision des variables n'est pas bonne du tout sous vb ..." & vbCrLf & "On ne peut aller plus loin"
End Sub
Function IsPrime(X As Single) As Boolean
Dim i As Single
IsPrime = True
If X = 2 Then Exit Function
For i = 3 To Int(Sqr(X)) Step 2
If (X Mod i) = 0 Then IsPrime = False: Exit Function
Next i
End Function
'Voila. Si ca vous fait chier de tout faire je mettrai un zip.
Conclusion :
ET LES NOMBRES PARFAITS IMPAIRES ???
A l'heure actuel aucun nombre parfait n'est connu.
Mais on sait que s'il en existait un :
--> Il aurait au moins 11 facteurs premiers distincts (Hagis 1983)
--> Il aurait un facteur premier supérieur à 300 000
--> Il serait supérieur a 10^300 (Brent-Cohen-Ricle)
Bonne chance ;)
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.