2017-11-14 13 views
-2

results are not as expected. pow(x,y,z) must be efficient, but the results altered. why?Ambiguität in pow (x, y, z) und x ** y% z Geschwindigkeit in Python 3. Welche ist effizient?

import timeit 
print(timeit.timeit("pow(2505626,1520321,2700643)")) 
output:3.700144177302718 
print(timeit.timeit("pow(2505626,1520321,2700643)",number=1000000)) 
output:4.591832527890801 
print(timeit.timeit("2505626**1520321%2700643",number=1000000)) 
output:0.014752348884940147 
+2

Fragen Sie nicht über Bilder von Code. Kopieren Sie den Code in die Frage selbst. – ArtOfCode

+0

Sie verwenden Zeit mit nur einer Ausführung und Sie erwarten ein genaues Ergebnis? – alfasin

+0

@ArtOfCode Bild soll die Ausgabe genau zeigen. –

Antwort

0

Tat pow() keine gute Leistung auf ganze Zahlen (in drei Argument-Form). Siehe die docstring der Funktion:

Code:

def pow(*args, **kwargs): # real signature unknown 
    """ 
    Equivalent to x**y (with two arguments) or x**y % z (with three arguments) 

    Some types, such as ints, are able to use a more efficient algorithm when 
    invoked using the three argument form. 
    """ 
    pass 
Verwandte Themen