OVH Cloud OVH Cloud

Puissance et Racine

17 réponses
Avatar
Jacquouille
Bonjour,

Avec mon antique XL 2003, les fonctions Puissance et Racine me permettent
d'élever un nombre à une telle puissance ou d'en extraire la racine.
Le tout n'est possible que si je connais le nombre au départ.

Si je prend la fonction à l'envers, comment puis-je savoir qu'un nombre (nb)
est la puissance (p) d'un autre nombre?
Exemple, si j'ai 81 comme nb, comment puis-je savoir qu'il représente 3 à la
puissance p, sans faire 36 calculs d'approche tels que 3², puis 3³, puis 3
exp4 .....?
Question : avec 2401 (7 à la 4°) ?

Merci et bonne fin de WE

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.

7 réponses

1 2
Avatar
isabelle
par contre c'est ok avec R As Currency
isabelle
Le 2017-08-27 à 20:16, isabelle a écrit :
Salut Denis, salut à tous,
je n'ai pas de réponse seulement une question en plus,
avec R As Variant
le résultat est:
59049^1
243^2
3^10
9^5 n'est pas trouvé
le mystère s'épaissit....
isabelle
Avatar
isabelle
juste pour le test du maximum de la valeur V (sans dépassement de capacité)
R As Currency a planté,
R As String le max (sans dépassement de capacité) est V = 999999999
j'ai un résultat (déjà connu 999999999^1) après 15 min.
Sub test2()
'activer la référence "Microsoft Scripting Runtime"
Dim Dico As New Scripting.Dictionary, Cle As String
Dim V As Long, R As String, n As Long, X As Long
V = 999999999
'Cells(1, "H") = Now
For n = 1 To V
R = V ^ (1 / n)
X = Int(R)
If X - R = 0 Then
Cle = R & "^" & n
If Not Dico.Exists(Cle) Then Dico.Add Cle, ""
End If
Next
Columns(1).ClearContents
Range("A1").Resize(Dico.Count) = Application.Transpose(Dico.Keys)
'Cells(1, "I") = Now
End Sub
si vous faite le test avec moins de temps, s.v.p. décrivez-moi les composantes
de votre pc :)
isabelle
Avatar
Jacquouille
Merci Isabelle, Denis et Daniel
Pour faire bref (et si je comprends bien), le résultat sera plus ou moins
complet suivant la déclaration du type variable.
Pour le reste, j'attendrai que Denis passe en 2° année. -))
Le dernier résultat me suffit amplement.
grand merci à vous trois
Bon lundi
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"News.aioe.org" a écrit dans le message de groupe de discussion :
onvko7$1fa3$
OK, je vais me répondre à moi-même!
Avec cette procédure, cela fonctionne, la seule différence, j'ai
modifié dans la déclaration des variables :
R As String au lieu de R As Double comme il se devrait.
Je n'ai aucune explication pour cette chinoiserie,
du Microsoft tout craché!
Si quelqu'un a une explication, je suis preneur.
'--------------------------------------------------------------------------
Sub test1()
Dim B As Long, R As String, T()
Dim Compteur As Long, V As Long, X As Long
'Valeur de départ pour laquelle tu veux avoir
'les combinaisons possibles d'une valeur X
'élevée à une puissance Y
V = 59049 '<<<<<<=====
For B = 1 To V
R = V ^ (1 / B)
X = Int(R)
If X - CDbl(R) = 0 Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = CLng(R) & " Puissance " & B
End If
Next
Columns(1).Clear
Range("A1").Resize(UBound(T)).Value = Application.Transpose(T)
End Sub
'--------------------------------------------------------------------------
MichD
Avatar
LSteph
Bonjour,
plus simplement si tu cherches les combinaisons de nombre entiers à l a sour ce d'une racine effectivement passer par les puissances.?
Dans ta feuille ligne 1 tu écris de 1 à 10
idem colonne 1 (tu peux même aller jusqu'à 20)
formule en B2 à entrer dans toute la matrice:
=B$1^$A2
--
LSteph
Avatar
News.aioe.org
| Pour faire bref (et si je comprends bien), le résultat sera plus ou moins
complet suivant la déclaration du type variable.
Tu as raison. Cette variable R devrait avoir le type "Double". Cependant
pour obtenir la liste complète des résultats, j'ai déclaré la variable As
String "Dim R As String" qui est selon moi une incongruité. Semble-t-il,
les fonctions de conversion Clng() ou Int() n'arrivent pas à convertir le
contenu de la variable R en "Entier"... lors de cette transformation, il y a
un tout petit résidu (une poussière de décimale) qui fait que le résultat de
"If X - CDbl(R) = 0 Then" n'égale pas 0 quand B = 5. Comme je n'ai pas
d'explication... ce doit être un "bug"! :-))
MichD
'--------------------------------------------------------------------------
Sub test1()
Dim B As Long, R As String, T()
Dim Compteur As Long, V As Long, X As Long
'Valeur de départ pour laquelle tu veux avoir
'les combinaisons possibles d'une valeur X
'élevée à une puissance Y
V = 59049 '<<<<<<=====
For B = 1 To V
R = V ^ (1 / B)
X = Int(R)
If X - CDbl(R) = 0 Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = CLng(R) & " Puissance " & B
End If
Next
Columns(1).Clear
Range("A1").Resize(UBound(T)).Value = Application.Transpose(T)
End Sub
'--------------------------------------------------------------------------
MichD
Avatar
Jacquouille
Merci Stéphane,
je crois que la macro est plus pratique car on ne risque pas d'oublier une
donnée.
La différence étant qu'elles sont listées, tandis que dans un tableau, il
faut chercher après.....
Je te remercie de t'être penché sur ma question.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"LSteph" a écrit dans le message de groupe de discussion :
Bonjour,
plus simplement si tu cherches les combinaisons de nombre entiers à la sour
ce d'une racine effectivement passer par les puissances.?
Dans ta feuille ligne 1 tu écris de 1 à 10
idem colonne 1 (tu peux même aller jusqu'à 20)
formule en B2 à entrer dans toute la matrice:
=B$1^$A2
--
LSteph
Avatar
Jacquouille
Il est vrai que c'est impensable qu'il traine un fond de décimale dans une
variable qui est sensée se vider à chaque coup.
A moins qu'ils n'aient copié sur le seau d'eau dont on se sert. même vide,
il reste de l'humidité dedans. -))
grand merci à toi et bonne journée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"News.aioe.org" a écrit dans le message de groupe de discussion :
onvko7$1fa3$
OK, je vais me répondre à moi-même!
Avec cette procédure, cela fonctionne, la seule différence, j'ai
modifié dans la déclaration des variables :
R As String au lieu de R As Double comme il se devrait.
Je n'ai aucune explication pour cette chinoiserie,
du Microsoft tout craché!
Si quelqu'un a une explication, je suis preneur.
'--------------------------------------------------------------------------
Sub test1()
Dim B As Long, R As String, T()
Dim Compteur As Long, V As Long, X As Long
'Valeur de départ pour laquelle tu veux avoir
'les combinaisons possibles d'une valeur X
'élevée à une puissance Y
V = 59049 '<<<<<<=====
For B = 1 To V
R = V ^ (1 / B)
X = Int(R)
If X - CDbl(R) = 0 Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = CLng(R) & " Puissance " & B
End If
Next
Columns(1).Clear
Range("A1").Resize(UBound(T)).Value = Application.Transpose(T)
End Sub
'--------------------------------------------------------------------------
MichD
1 2