Python GCD - How to get GCD of 2 integers or a list

The simplest way to get GCD of 2 integers is importing math module and using gcd function.

import math

g = math.gcd(6, 8)

print(g)  # 2

But gcd can't calculate GCD of more than 3 integers.

import math

g = math.gcd(6, 8, 10)

# TypeError: gcd expected 2 arguments, got 3

How to get GCD of more than 3 integers

You can calculate GCD of a list with reduce in functools module.

import math
from functools import reduce

a = [24, 16, 40]

g = reduce(math.gcd, a)

print(g)  # 8

reduce repeats the process of

  • applying math.gcd to the first 2 items of a and getting the value (8)
  • removing these items from a
  • putting 8 to the beginnging of a

To put it simply:

  • math.gcd(24, 16) -> 8
  • math.gcd(8, 40) -> 8

Python Math

Python Tutorial