public class 有理数 {
public static void main(String[] args) {
Rational a = new Rational(1, 3);
Rational b = new Rational(1, 6);
Rational c = a.add(b);
String result = c.toString();
System.out.println(a + " + " + b + " = " + result);
}
//内部类
static class Rational {
private long ra;
private long rb;
// 求最小公约数
public long gcd(long a, long b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 构造函数
public Rational(long a, long b) {
ra = a;
rb = b;
long k = gcd(ra, rb);// 求公约数
if (k > 1) {// 进行约分
ra /= k;
rb /= k;
}
}
// 加法
public Rational add(Rational x) {
return new Rational(x.ra * this.rb + this.ra * x.rb, x.rb * this.rb);
}
// 乘法
public Rational mul(Rational x) {
// 当前对象分子*x的分子 ;当前对象分母*x的分母
return new Rational(ra * x.ra, rb * x.rb);
}
public String toString() {
if (rb == 1) {
return "" + ra;
} else {
return ra + "/" + rb;
}
}
}
}
Java 有理数类——分数和整数;gcd最小公约数;
最新推荐文章于 2022-10-20 21:09:34 发布