Jack Mustacato 40c165104c Add hashCode method to starter solution | il y a 6 ans | |
---|---|---|
.. | ||
.meta | il y a 6 ans | |
src | il y a 6 ans | |
README.md | il y a 6 ans | |
build.gradle | il y a 6 ans |
A rational number is defined as the quotient of two integers a
and b
, called the numerator and denominator, respectively, where b != 0
.
The absolute value |r|
of the rational number r = a/b
is equal to |a|/|b|
.
The sum of two rational numbers r1 = a1/b1
and r2 = a2/b2
is r1 + r2 = a1/b1 + a2/b2 = (a1 * b2 + a2 * b1) / (b1 * b2)
.
The difference of two rational numbers r1 = a1/b1
and r2 = a2/b2
is r1 - r2 = a1/b1 - a2/b2 = (a1 * b2 - a2 * b1) / (b1 * b2)
.
The product (multiplication) of two rational numbers r1 = a1/b1
and r2 = a2/b2
is r1 * r2 = (a1 * a2) / (b1 * b2)
.
Dividing a rational number r1 = a1/b1
by another r2 = a2/b2
is r1 / r2 = (a1 * b2) / (a2 * b1)
if a2 * b1
is not zero.
Exponentiation of a rational number r = a/b
to a non-negative integer power n
is r^n = (a^n)/(b^n)
.
Exponentiation of a rational number r = a/b
to a negative integer power n
is r^n = (b^m)/(a^m)
, where m = |n|
.
Exponentiation of a rational number r = a/b
to a real (floating-point) number x
is the quotient (a^x)/(b^x)
, which is a real number.
Exponentiation of a real number x
to a rational number r = a/b
is x^(a/b) = root(x^a, b)
, where root(p, q)
is the q
th root of p
.
Implement the following operations:
Your implementation of rational numbers should always be reduced to lowest terms. For example, 4/4
should reduce to 1/1
, 30/60
should reduce to 1/2
, 12/8
should reduce to 3/2
, etc. To reduce a rational number r = a/b
, divide a
and b
by the greatest common divisor (gcd) of a
and b
. So, for example, gcd(12, 8) = 4
, so r = 12/8
can be reduced to (12/4)/(8/4) = 3/2
.
Assume that the programming language you are using does not have an implementation of rational numbers.
You can run all the tests for an exercise by entering
$ gradle test
in your terminal.
Wikipedia https://en.wikipedia.org/wiki/Rational_number
It's possible to submit an incomplete solution so you can see how others have completed the exercise.