分数加减乘除 实现

package com.bean;

public class Fraction {
private Integer molecule;
private Integer denominator;//!=0

public Fraction(Integer molecule, Integer denominator){
this.denominator = denominator;
this.molecule = molecule;
}

public Integer getMolecule() {
return molecule;
}
public void setMolecule(Integer molecule) {
this.molecule = molecule;
}
public Integer getDenominator() {
return denominator;
}
public void setDenominator(Integer denominator) {
this.denominator = denominator;
}


@Override
public String toString() {
return "Fraction [molecule=" + molecule + ", denominator="
+ denominator + "]. " + molecule + "/" + denominator;
}

}

package com.acm;

import com.bean.Fraction;

public class FractionOperation {
public static Fraction add(Fraction value1, Fraction value2) {
Fraction ret = new Fraction(value1.getMolecule()
* value2.getDenominator() + value1.getDenominator()
* value2.getMolecule(), value1.getDenominator()
* value2.getDenominator());
Integer miniDivisor = miniDivisor(ret.getDenominator(),
ret.getMolecule());
ret.setDenominator(ret.getDenominator() / miniDivisor);
ret.setMolecule(ret.getMolecule() / miniDivisor);
return ret;
}

public static Fraction subtrac(Fraction value1, Fraction value2) {
Fraction ret = new Fraction(value1.getMolecule()
* value2.getDenominator() - value1.getDenominator()
* value2.getMolecule(), value1.getDenominator()
* value2.getDenominator());
Integer miniDivisor = miniDivisor(ret.getDenominator(),
ret.getMolecule());
ret.setDenominator(ret.getDenominator() / miniDivisor);
ret.setMolecule(ret.getMolecule() / miniDivisor);
return ret;
}

public static Fraction multil(Fraction value1, Fraction value2) {
Fraction ret = new Fraction(value1.getMolecule()
* value2.getMolecule(), value1.getDenominator()
* value2.getDenominator());
Integer miniDivisor = miniDivisor(ret.getDenominator(),
ret.getMolecule());
ret.setDenominator(ret.getDenominator() / miniDivisor);
ret.setMolecule(ret.getMolecule() / miniDivisor);
return ret;
}

public static Fraction dividen(Fraction value1, Fraction value2) {
Fraction ret = new Fraction(value1.getMolecule()
* value2.getDenominator(), value1.getDenominator()
* value2.getMolecule());
Integer miniDivisor = miniDivisor(ret.getDenominator(),
ret.getMolecule());
ret.setDenominator(ret.getDenominator() / miniDivisor);
ret.setMolecule(ret.getMolecule() / miniDivisor);
return ret;
}

public static Integer miniDivisor(Integer value1, Integer value2) {
Integer temp = new Integer(1);
Integer total = temp;

for (int i = 2, j = value1 / 2 + 1; i < j;) {
temp = new Integer(i);
if (value1 % i != 0) {
i++;
} else {
value1 = value1 / i;
if (value2 % i == 0) {
total = total * i;
value2 = value2 / i;
}
}
}
return total;
}

public static Integer leastCommonMultiple(Integer value1, Integer value2) {
if(miniDivisor(value1, value2) == 1){
return value1 * value2;
}
Integer temp = value1;
if (value1 < value2) {
temp = value2;
}

for (Integer i = temp; i <= value1 * value2; i++) {
if (i % value1 == 0 && i % value2 == 0) {
temp = i;
break;
}
}
return temp;
}

public static void main(String[] args) {

System.out.println(miniDivisor(new Integer(9), new Integer(6)));

System.out.println(miniDivisor(new Integer(9), new Integer(15)));

System.out.println(miniDivisor(new Integer(24), new Integer(6)));

System.out.println(miniDivisor(new Integer(24), new Integer(21)));

System.out
.println(leastCommonMultiple(new Integer(24), new Integer(32)));

System.out
.println(leastCommonMultiple(new Integer(24), new Integer(35)));

Fraction value1 = new Fraction(4, 15);
Fraction value2 = new Fraction(2, 9);

System.out.println(add(value1, value2));
System.out.println(subtrac(value1, value2));
System.out.println(multil(value1, value2));
System.out.println(dividen(value1, value2));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值