Behavior of Python ** and % operators with big numbers

前端 未结 4 1264
一整个雨季
一整个雨季 2021-01-23 11:03

When I put in Python interpreter a ** b % c with large a (20 figures) b (4 figures) c (20 figures) I saw that Python calculates it pretty fast, almost like pow (a,b,c). I expect

相关标签:
4条回答
  • 2021-01-23 11:44

    There is no magic behind the scenes, other than Python supports arbitrary-precision integers, and is well-implemented. It really did calculate a**b, then %c.

    0 讨论(0)
  • 2021-01-23 11:50

    If you are typing into the Python interpreter something like:

    20937505974095709374 ** 3438
    

    Then seeing a couple of seconds wait. Then trying:

    20937505974095709374 ** 3438 % 6
    

    And seeing no wait, and wondering why there is a difference, then the delay that you see in the first instance is actually the time your terminal takes to buffer and print the huge number you just created to the screen.

    0 讨论(0)
  • 2021-01-23 11:50

    20 figures is laughably small on a modern computer. Try 2000 figures and you might see a difference.

    Also, this past question is related: How did Python implement the built-in function pow()?

    0 讨论(0)
  • 2021-01-23 11:51

    Today's computers are amazingly fast, very complicated calculations can occur in what seems like no time at all. You need to repeat such calculations very many times to see the delay; I'd start with a million.

    0 讨论(0)
提交回复
热议问题