Décomposition en facteurs premiers

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.

Bonjour,

Dans cette discussion tu devrais trouver:

https://forum.excel-pratique.com/viewtopic.php?t=89842

A+

Merci Algo j'y ai pensé mais cette facon d'inclure la recherche de nombre premier me semble "lourde"

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
Rechercher des sujets similaires à "decomposition facteurs premiers"