Décomposition de nombres en facteurs premiers

Soyez le premier à donner votre avis sur cette source.

Vue 4 485 fois - Téléchargée 247 fois

Description

Le titre dit tout

J'ai pas mis de commentaires mais c'est tellement simple ...

Source / Exemple :


Dim div, nbr, nbrdiv As Long

Private Sub Command1_Click()
If Len(Text1.Text) >= 16 Then MsgBox "Le nombre doit comporter 15 chiffres au plus": Exit Sub

nbr = Text1.Text
div = 2
Text2.Text = ""

Text1.Locked = True
Text2.Locked = True
Command1.Enabled = False

Dim TPSstart As Single, TPSstop As Single
TPSstart = Timer

While div <= nbr
While nbr / div = Int(nbr / div)
Text2.Text = Text2.Text & div & " x "
nbr = nbr / div
Wend
DoEvents
Label3.Caption = "En travail :    " & Format((nbr / div), "#0.00000000")
div = div + 1
Wend

TPSstop = Format(Timer - TPSstart, "#0.00")

If Text2.Text = Text1.Text & " x " Then
Text2.Text = Text1.Text & " est un nombre premier."
Else
Text2.Text = Mid(Text2.Text, 1, Len(Text2.Text) - 3)
End If

Label3.Caption = ""
Text1.Locked = False
Text2.Locked = False
Command1.Enabled = True

If TPSstop >= 60 Then
If TPSstop / 3600 >= 1 Then
tps = TPSstop \ 3600 & " h, "
TPSstop = TPSstop - (TPSstop \ 3600) * 3600
End If
tps = tps & TPSstop \ 60 & " mins, "
TPSstop = TPSstop - (TPSstop \ 60) * 60
End If
tps = tps & TPSstop & " secs."

MsgBox "Factorisation en facteurs premiers terminée en " & tps

End Sub

Conclusion :


Sur une form mettre Command1 + Label3 + Text1 + Text2

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
21
Date d'inscription
jeudi 27 décembre 2001
Statut
Membre
Dernière intervention
22 décembre 2008

Oula c'est pas très rapide... Essaie de decomposé le nombre 239528150029613 et tu verras par toi meme lol...
Messages postés
37
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
27 juillet 2007

Voila une nouvelle mise à jour !
Messages postés
61
Date d'inscription
dimanche 21 juillet 2002
Statut
Membre
Dernière intervention
23 avril 2003

Je te le redis: utilise la fonction Timer pour le temps de calcule au lieu de ton objet Timer:

dim TPSTMP as single,TPSTOT as single

TPSTMP=Timer
While div <= nbr
nbrdiv = nbr / div

...

Wend
TPSTOT=Timer-TPSTMP

et la tu recupere le nombre de secondes écoulées directement... et sans l'objet Timer qui ralenti tout...
@+
Messages postés
37
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
27 juillet 2007

Le programme tourne beaucoup plus vite à present !
Merci de vos commentaires !
Messages postés
37
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
27 juillet 2007

Voila j'ai mis à jour la source donnez moi vos commentaires.
Afficher les 9 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.