mirror of
https://github.com/lcn2/calc.git
synced 2025-08-19 01:13:27 +03:00
55 lines
1.2 KiB
Plaintext
55 lines
1.2 KiB
Plaintext
NAME
|
|
gcdrem - result of removing factors of integer common to a specified integer
|
|
|
|
SYNOPSIS
|
|
gcdrem(x, y)
|
|
|
|
TYPES
|
|
x integer
|
|
y integer
|
|
|
|
return non-negative integer
|
|
|
|
DESCRIPTION
|
|
|
|
If x and y are not zero, gcdrem(x, y) returns the greatest integer
|
|
divisor d of x relatively prime to y, i.e. for which gcd(d,y) = 1.
|
|
In particular, gcdrem(x,y) = abs(x) if x and y are relatively
|
|
prime.
|
|
|
|
For all x, gcdrem(x, 0) = 1.
|
|
|
|
For all nonzero y, gcdrem(0, y) = 0.
|
|
|
|
PROPERTIES
|
|
gcdrem(x,y) = gcd(abs(x), abs(y)).
|
|
|
|
If x is not zero, gcdrem(x,y) = gcdrem(x, gcd(x,y)) = gcdrem(x, y % x).
|
|
|
|
For fixed nonzero x, gcdrem(x,y) is periodic with period abs(x).
|
|
|
|
gcdrem(x,y) = 1 if and only if every prime divisor of x
|
|
is a divisor of y.
|
|
|
|
If x is not zero, gcdrem(x,y) == abs(x) if and only if gcd(x,y) = 1.
|
|
|
|
If y is not zero and p_1, p_2, ..., p_k are the prime divisors of y,
|
|
|
|
gcdrem(x,y) = frem(...(frem(frem(x,p_1),p_2)...,p_k)
|
|
|
|
EXAMPLE
|
|
> print gcdrem(6,15), gcdrem(15,6), gcdrem(72,6), gcdrem(6,72)
|
|
2 5 1 1
|
|
|
|
> print gcdrem(630,6), gcdrem(6,630)
|
|
35 1
|
|
|
|
LIMITS
|
|
none
|
|
|
|
LIBRARY
|
|
NUMBER *qgcdrem(NUMBER *x, NUMBER *y)
|
|
|
|
SEE ALSO
|
|
gcd, frem, isrel
|