Divide a non-negative integer a by a positive integer b, giving quotient and remainder.
(a, b)
| 509 | |
| 510 | |
| 511 | def _divmod_pos(a, b): |
| 512 | """Divide a non-negative integer a by a positive integer b, giving |
| 513 | quotient and remainder.""" |
| 514 | # Use grade-school algorithm in base 2**n, n = nbits(b) |
| 515 | n = b.bit_length() |
| 516 | a_digits = _int2digits(a, n) |
| 517 | |
| 518 | r = 0 |
| 519 | q_digits = [] |
| 520 | for a_digit in reversed(a_digits): |
| 521 | q_digit, r = _div2n1n((r << n) + a_digit, b, n) |
| 522 | q_digits.append(q_digit) |
| 523 | q_digits.reverse() |
| 524 | q = _digits2int(q_digits, n) |
| 525 | return q, r |
| 526 | |
| 527 | |
| 528 | def int_divmod(a, b): |
no test coverage detected
searching dependent graphs…