(a, b, m)
return [(r * b // g + t * m // g) % m for t in range(g)]
Returns the values of x satisfying a*x congruent b mod(m)

    Here m is positive integer and a, b are natural numbers.
    This function returns only those values of x which are distinct mod(m).

    Examples
    ========

    >>> from sympy.polys.galoistools import linear_congruence

    >>> linear_congruence(3, 12, 15)
    [4, 9, 14]

    There are 3 solutions distinct mod(15) since gcd(a, m) = gcd(3, 15) = 3.

    **Reference**
    1) Wikipedia http://en.wikipedia.org/wiki/Linear_congruence_theorem
Returns the values of x satisfying a*x congruent b mod(m)
Returns the values of x satisfying a * x congruent b mod ( m )
def linear_congruence(a, b, m):
    """
    Returns the values of x satisfying a*x congruent b mod(m)

    Here m is positive integer and a, b are natural numbers.
    This function returns only those values of x which are distinct mod(m).

    Examples
    ========

    >>> from sympy.polys.galoistools import linear_congruence

    >>> linear_congruence(3, 12, 15)
    [4, 9, 14]

    There are 3 solutions distinct mod(15) since gcd(a, m) = gcd(3, 15) = 3.

    **Reference**
    1) Wikipedia http://en.wikipedia.org/wiki/Linear_congruence_theorem

    """
    from sympy.polys.polytools import gcdex
    if a % m == 0:
        if b % m == 0:
            return list(range(m))
        else:
            return []
    r, _, g = gcdex(a, m)
    if b % g != 0:
        return []
    return [(r * b // g + t * m // g) % m for t in range(g)]
def linear_congruence ( a , b , m ) : from sympy . polys . polytools import gcdex if a % m == 0 : if b % m == 0 : return list ( range ( m ) ) else : return [ ] r , _ , g = gcdex ( a , m ) if b % g != 0 : return [ ] return [ ( r * b // g + t * m // g ) % m for t in range ( g ) ]