OVH Cloud OVH Cloud

Décomposer en produit de nombres premiers.

12 réponses
Avatar
Jean-Paul
Est-il possible avec Excel de décomposer un nombre en produits de nombres
premiers ?

Exemple : 138 = 3 x 2 x 23

Bien-sûr, je cherche la solution pour des nombres plus imporants que 138...
;-D

Merci pour votre aide

JP

10 réponses

1 2
Avatar
Nicolas B.
Salut Jean-Paul,

Essaie ceci :

Function DecompositionFacteursPremiers(n As Long)

Dim p As Long
Dim str As String
p = 2
Dim e As Integer

If n = 1 Then
DecompositionFacteursPremiers = "Ø"
Else
While n <> 1
If Int(n / p) = n / p Then
n = n / p
e = e + 1
Else
If e <> 0 Then str = str & p & "^" & e & "*"
p = p + 1
e = 0
End If
Wend
DecompositionFacteursPremiers = str & p & "^" & e
End If

End Function


Sub Test()
MsgBox DecompositionFacteursPremiers(138)
End Sub


A+
Nicolas B.

Est-il possible avec Excel de décomposer un nombre en produits de nombres
premiers ?

Exemple : 138 = 3 x 2 x 23

Bien-sûr, je cherche la solution pour des nombres plus imporants que 138...
;-D

Merci pour votre aide

JP


Avatar
Jean-Paul
merci, génial ! :-D

Jean-Paul


Salut Jean-Paul,

Essaie ceci :

Function DecompositionFacteursPremiers(n As Long)

Dim p As Long
Dim str As String
p = 2
Dim e As Integer

If n = 1 Then
DecompositionFacteursPremiers = "Ø"
Else
While n <> 1
If Int(n / p) = n / p Then
n = n / p
e = e + 1
Else
If e <> 0 Then str = str & p & "^" & e & "*"
p = p + 1
e = 0
End If
Wend
DecompositionFacteursPremiers = str & p & "^" & e
End If

End Function


Sub Test()
MsgBox DecompositionFacteursPremiers(138)
End Sub


A+
Nicolas B.

Est-il possible avec Excel de décomposer un nombre en produits de nombres
premiers ?

Exemple : 138 = 3 x 2 x 23

Bien-sûr, je cherche la solution pour des nombres plus imporants que 138...
;-D

Merci pour votre aide

JP





Avatar
Pierre Fauconnier
Salut Nicolas,

J'ai des doutes sur ta formule
Avec 150, cela me donne 2^1*3^1*5^2
C'est-à-dire 2*3*25 et 25 n'est pas premier.


La colle de Nicolas, c'est du costaud, puisque la décomposition en
nombres premiers est la base du cryptage actuel de toute une série de
données, notamment les clé numériques utilisées en informatique et en
cryptographie bancaire.

Peut-être peut-on lancer un appel à Serge pour qu'il nous explique le
pourquoi du comment ???


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Nicolas B." a écrit dans le message
de news:
Salut Jean-Paul,

Essaie ceci :

Function DecompositionFacteursPremiers(n As Long)

Dim p As Long
Dim str As String
p = 2
Dim e As Integer

If n = 1 Then
DecompositionFacteursPremiers = "Ø"
Else
While n <> 1
If Int(n / p) = n / p Then
n = n / p
e = e + 1
Else
If e <> 0 Then str = str & p & "^" & e & "*"
p = p + 1
e = 0
End If
Wend
DecompositionFacteursPremiers = str & p & "^" & e
End If

End Function


Sub Test()
MsgBox DecompositionFacteursPremiers(138)
End Sub


A+
Nicolas B.

Est-il possible avec Excel de décomposer un nombre en produits de nombres
premiers ?

Exemple : 138 = 3 x 2 x 23

Bien-sûr, je cherche la solution pour des nombres plus imporants que
138... ;-D

Merci pour votre aide

JP




Avatar
Nicolas B.
Salut Pierre,

C'est-à-dire 2*3*25 et 25 n'est pas premier.


25 non, mais la décomposition en facteurs premiers de 150 est 2*3*5*5
(avec 5 premier), que l'on écrit en général avec des puissances : 2*3*5^2.

La colle de Nicolas, c'est du costaud, puisque la décomposition en
nombres premiers est la base du cryptage actuel de toute une série de
données, notamment les clé numériques utilisées en informatique et en
cryptographie bancaire.



Le problème c'est que les nombres premiers utilisés en cryptographie
(par exemple l'algorithme RSA) sont très grands (évidemment... ils ont
pensé à tout ;-), et tout programme permettant de décomposer le produit
de deux nombres premiers grands mettrait peut-être quelques années à
trouver la décomposition. Et là, comme par hasard, toute carte bancaire
dont le numéro aurait été crypté et le message codé intercepté aura
atteint sa date d'expiration.


A+
Nicolas B.

Salut Nicolas,

J'ai des doutes sur ta formule
Avec 150, cela me donne 2^1*3^1*5^2
C'est-à-dire 2*3*25 et 25 n'est pas premier.


La colle de Nicolas, c'est du costaud, puisque la décomposition en
nombres premiers est la base du cryptage actuel de toute une série de
données, notamment les clé numériques utilisées en informatique et en
cryptographie bancaire.

Peut-être peut-on lancer un appel à Serge pour qu'il nous explique le
pourquoi du comment ???


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Nicolas B." a écrit dans le message
de news:

Salut Jean-Paul,

Essaie ceci :

Function DecompositionFacteursPremiers(n As Long)

Dim p As Long
Dim str As String
p = 2
Dim e As Integer

If n = 1 Then
DecompositionFacteursPremiers = "Ø"
Else
While n <> 1
If Int(n / p) = n / p Then
n = n / p
e = e + 1
Else
If e <> 0 Then str = str & p & "^" & e & "*"
p = p + 1
e = 0
End If
Wend
DecompositionFacteursPremiers = str & p & "^" & e
End If

End Function


Sub Test()
MsgBox DecompositionFacteursPremiers(138)
End Sub


A+
Nicolas B.


Est-il possible avec Excel de décomposer un nombre en produits de nombres
premiers ?

Exemple : 138 = 3 x 2 x 23

Bien-sûr, je cherche la solution pour des nombres plus imporants que
138... ;-D

Merci pour votre aide

JP









Avatar
Pierre Fauconnier
Bien vu Nicolas... Je n'avais même pas pensé à décomposer 25... Quel
idiot...

Dès lors, merci pour ton algorythme...

Bonne soirée


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Nicolas B." a écrit dans le message
de news:
Salut Pierre,

C'est-à-dire 2*3*25 et 25 n'est pas premier.


25 non, mais la décomposition en facteurs premiers de 150 est 2*3*5*5
(avec 5 premier), que l'on écrit en général avec des puissances : 2*3*5^2.

La colle de Nicolas, c'est du costaud, puisque la décomposition en
nombres premiers est la base du cryptage actuel de toute une série de
données, notamment les clé numériques utilisées en informatique et en
cryptographie bancaire.



Le problème c'est que les nombres premiers utilisés en cryptographie (par
exemple l'algorithme RSA) sont très grands (évidemment... ils ont pensé à
tout ;-), et tout programme permettant de décomposer le produit de deux
nombres premiers grands mettrait peut-être quelques années à trouver la
décomposition. Et là, comme par hasard, toute carte bancaire dont le
numéro aurait été crypté et le message codé intercepté aura atteint sa
date d'expiration.


A+
Nicolas B.

Salut Nicolas,

J'ai des doutes sur ta formule
Avec 150, cela me donne 2^1*3^1*5^2
C'est-à-dire 2*3*25 et 25 n'est pas premier.


La colle de Nicolas, c'est du costaud, puisque la décomposition en
nombres premiers est la base du cryptage actuel de toute une série de
données, notamment les clé numériques utilisées en informatique et en
cryptographie bancaire.

Peut-être peut-on lancer un appel à Serge pour qu'il nous explique
le pourquoi du comment ???


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin
( proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Nicolas B." a écrit dans le
message de news:

Salut Jean-Paul,

Essaie ceci :

Function DecompositionFacteursPremiers(n As Long)

Dim p As Long
Dim str As String
p = 2
Dim e As Integer

If n = 1 Then
DecompositionFacteursPremiers = "Ø"
Else
While n <> 1
If Int(n / p) = n / p Then
n = n / p
e = e + 1
Else
If e <> 0 Then str = str & p & "^" & e & "*"
p = p + 1
e = 0
End If
Wend
DecompositionFacteursPremiers = str & p & "^" & e
End If

End Function


Sub Test()
MsgBox DecompositionFacteursPremiers(138)
End Sub


A+
Nicolas B.


Est-il possible avec Excel de décomposer un nombre en produits de
nombres premiers ?

Exemple : 138 = 3 x 2 x 23

Bien-sûr, je cherche la solution pour des nombres plus imporants que
138... ;-D

Merci pour votre aide

JP










Avatar
JpPradier
Bonsoir à tous

Une variante avec formules :

http://cjoint.com/?evvJnd5Fs6


j-p
Avatar
Jean-Paul Fleury
Merci à vous tous ! La variante avec fomules est très bien aussi ! ;)

JPaul



Bonsoir à tous

Une variante avec formules :

http://cjoint.com/?evvJnd5Fs6


j-p




Avatar
déCalcoManiaque
JpPradier a émis l'idée que voici :
Bonsoir à tous

Une variante avec formules :

http://cjoint.com/?evvJnd5Fs6


j-p


oui mais avec 100003 (qui est premier) ça écrit n'importe nakoi
Sinon c'est beau c'est vrai

Avatar
JpPradier
Bonsoir déCalcoManiaque

Oui, j'aurais du préciser que ça ne fonctionne que pour les "petits" nombres dont le premier
diviseur est inférieur à 65536.

j-p
Avatar
déCalcoManiaque
JpPradier a tenu à faire savoir ce dimanche que :
Bonsoir déCalcoManiaque

Oui, j'aurais du préciser que ça ne fonctionne que pour les "petits" nombres
dont le premier diviseur est inférieur à 65536.

j-p


bonsoir

65536 ... ben ça m'en bouche un coin ! pourquoi donc est-ce que? même
si dim est long?

1 2