Décomposition en facteurs premiers Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
r
rocket4
Membre impliqué
Membre impliqué
Messages : 1'119
Appréciation reçue : 1
Inscrit le : 30 août 2011
Version d'Excel : 2002

Message par rocket4 » 23 mars 2019, 19:32

Bonjour j'ai écris le bout de code suivant permettant la décomposition d'un entier en produit de facteurs premiers
il marche bien , mais j'aimerai pouvoir trouver un stratégie pour appeler chaque nombre premier à tester en ne me servant pas d'un tableau .
Sub decomposition_fact_prem()
t = Array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97)
n = InputBox("Saisir un entier à decomposer en facteurs premiers")
1:
For i = 0 To UBound(t)
j = 0
 If n Mod Val(t(i)) = 0 Then
  Do
   j = j + 1
  Loop Until n Mod (Val(t(i)) ^ j) <> 0
  w = w & "*" & Val(t(i)) & "^" & j - 1
  n = n / (Val(t(i)) ^ (j - 1))
      If n <> 1 Then
       GoTo 1
       Else
       MsgBox Mid(w, 2, Len(w))
       Exit Sub
      End If
  End If
Next
End Sub
Si bvous avez des suggestions ,je suis preneur , Merci à vous.
A
AlgoPlus
Membre fidèle
Membre fidèle
Messages : 470
Appréciations reçues : 36
Inscrit le : 27 février 2019
Version d'Excel : 2003

Message par AlgoPlus » 23 mars 2019, 19:42

Bonjour,

Dans cette discussion tu devrais trouver:
viewtopic.php?t=89842

A+
r
rocket4
Membre impliqué
Membre impliqué
Messages : 1'119
Appréciation reçue : 1
Inscrit le : 30 août 2011
Version d'Excel : 2002

Message par rocket4 » 23 mars 2019, 21:00

Merci Algo j'y ai pensé mais cette facon d'inclure la recherche de nombre premier me semble "lourde" :)
r
rocket4
Membre impliqué
Membre impliqué
Messages : 1'119
Appréciation reçue : 1
Inscrit le : 30 août 2011
Version d'Excel : 2002

Message par rocket4 » 23 mars 2019, 21:25

j'ai pu trouver , comme ceci c'est parfait
Sub decomposition_fact_prem()
Dim i As Integer
Dim t As Variant
Dim pr As String
n = InputBox("Saisir un entier à decomposer en facteurs premiers")
'creation d'un tableau de nbr premiers:
'---------------------------------------------------------------------------------------------
pr = ""
For i = 2 To n
If premier(i) = True Then
 pr = pr & " " & i
End If
Next
 t = split(LTrim(pr), " ")
'---------------------------------------------------------------------------------------------
1:
For i = 0 To UBound(t)
j = 0
 If n Mod Val(t(i)) = 0 Then
  Do
   j = j + 1
  Loop Until n Mod (Val(t(i)) ^ j) <> 0
  w = w & "*" & Val(t(i)) & "^" & j - 1
  n = n / (Val(t(i)) ^ (j - 1))
      If n <> 1 Then
       GoTo 1
       Else
       MsgBox Mid(w, 2, Len(w))
       Exit Sub
      End If
  End If
Next
End Sub
avec la fonction de recherche d'un nombre premier :
Function premier(x As Integer) As Boolean
For i = 2 To x - 1
 If x Mod i = 0 Then
  n = n + 1
 End If
Next
If n = 0 Then
premier = True
End If
End Function
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message