Schnellste Weg, um finden Sie die größte Potenz von 10, die kleiner als x

Gibt es keine schnelle Möglichkeit zu finden die größte Potenz von 10, die kleiner als eine gegebene Zahl?

Ich bin mit diesem Algorithmus, im moment, aber etwas in mir stirbt jedes mal wenn ich es sehe:

10**( int( math.log10(x) ) ) # python
pow( 10, (int) log10(x) )   //C

Ich umsetzen konnte einfach log10 und pow Funktionen für meine Probleme mit einer Schleife jeden, aber ich bin immer noch Fragen, wenn es ein bisschen Magie für dezimal-zahlen.

  • Was ist daran falsch? Es dauert .0161 Mikrosekunden im Durchschnitt durchzuführen 10**(int(math.log10(987654321987654321))), das ist eigentlich ziemlich beeindruckend.
  • reden wir über integers oder floats?
  • Der Schnellste Algorithmus ist wahrscheinlich, abhängig von der Größe der x. Sie werden wahrscheinlich wollen, um Profil zu einem hybrid-Ansatz.
  • In meinem Fall x ist eine ganze Zahl, aber ich denke, es sollte nicht ändern, dass viel (könnte cast float x in einen ganzzahligen Wert und Umgekehrt).
  • meine Antwort war schneller als andere, theoretisch, Es ist nützlich für die großen Nummern, die nicht 10-stellig.
InformationsquelleAutor peoro | 2010-12-22
Schreibe einen Kommentar