Nombres parfaits paires : calcul ( tres tres rapide )

Contenu du snippet

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 ;)

A voir également

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.