class_docstr: Efficient representation of ``f_1*f_2*...*f_n``.
class_docstr_tok: ["Efficient","representation","of","``","f_1","*","f_2","*","...","*","f_n","``","."]
docstr: Return Factors of ``gcd(self, other)``. The keys are
  the intersection of factors with the minimum exponent for
  each factor.
  
  Examples
  ========
  
  >>> from sympy.core.exprtools import Factors
  >>> from sympy.abc import x, y, z
  >>> a = Factors((x*y**2).as_powers_dict())
  >>> b = Factors((x*y/z).as_powers_dict())
  >>> a.gcd(b)
  Factors({x: 1, y: 1})
docstr_tok: ["Return","Factors","of","``","gcd","(","self",",","other",")","``",".","The","keys","are","the","intersection","of","factors","with","the","minimum","exponent","for","each","factor",".","Examples","========",">",">",">","from","sympy.core.exprtools","import","Factors",">",">",">","from","sympy.abc","import","x",",","y",",","z",">",">",">","a","=","Factors","(","(","x","*","y","*","*","2",")",".as_powers_dict","(",")",")",">",">",">","b","=","Factors","(","(","x","*","y\/z",")",".as_powers_dict","(",")",")",">",">",">","a.gcd","(","b",")","Factors","(","{","x",":","1",",","y",":","1","}",")"]
code: def gcd(self, other):  # Factors
      """Return Factors of ``gcd(self, other)``. The keys are
      the intersection of factors with the minimum exponent for
      each factor.
  
      Examples
      ========
  
      >>> from sympy.core.exprtools import Factors
      >>> from sympy.abc import x, y, z
      >>> a = Factors((x*y**2).as_powers_dict())
      >>> b = Factors((x*y/z).as_powers_dict())
      >>> a.gcd(b)
      Factors({x: 1, y: 1})
      """
      if not isinstance(other, Factors):
          other = Factors(other)
          if other.is_zero:
              return Factors(self.factors)
  
      factors = {}
  
      for factor, exp in self.factors.items():
          factor, exp = sympify(factor), sympify(exp)
          if factor in other.factors:
              lt = (exp - other.factors[factor]).is_negative
              if lt == True:
                  factors[factor] = exp
              elif lt == False:
                  factors[factor] = other.factors[factor]
  
      return Factors(factors)
  
imports: from .add import Add
  from .mul import Mul, _keep_coeff
  from .power import Pow
  from .basic import Basic
  from .expr import Expr
  from .function import expand_power_exp
  from .sympify import sympify
  from .numbers import Rational, Integer, Number, I, equal_valued
  from .singleton import S
  from .sorting import default_sort_key, ordered
  from .symbol import Dummy
  from .traversal import preorder_traversal
  from .coreerrors import NonCommutativeExpression
  from .containers import Tuple, Dict
  from sympy.external.gmpy import SYMPY_INTS
  from sympy.utilities.iterables import common_prefix, common_suffix, variations, iterable, is_sequence
  from collections import defaultdict
  from typing import Tuple
label_desc: Use image node_id 13 for calling the Factors obj's underlying member method code with example usage: obj.gcd(other) and returns: Factors, Factors