package com;
import java.util.Scanner;
public class Rational {
private long num=0; //分子
private long den=1; //分母
/************Begin*****************/
public Rational(long num,long den){//构造函数
this.num = num;
this.den = den;
}
public String add(Rational r2){
long fenzi = num *r2.den+r2.num*den;
//此时的num,den就是r1的值
long fenmu =den*r2.den;
for(int i = 2;i<fenzi;i++){
if(fenzi%i==0&&fenmu%i==0){
fenzi = fenzi/i;
fenmu = fenmu/i;
}
}
return fenzi+"/" +fenmu;//输出字符串格式
}
public String substract(Rational r2){
long fenzi = num*r2.den-r2.num*den;
long fenmu = den*r2.den;
for(int i = 2;i<fenzi;i++){
if(fenzi%i==0&&fenmu%i==0){
fenzi = fenzi/i;
fenmu = fenmu/i;
}
}
return fenzi+"/" +fenmu;
}
public String multiply(Rational r2){
long fenzi = num*r2.num;
long fenmu = den*r2.den;
for(int i = 2;i<fenzi;i++){
if(fenzi%i==0&&fenmu%i==0){
fenzi = fenzi/i;
fenmu = fenmu/i;
}
}
return fenzi+"/" +fenmu;
}
public String divide(Rational r2){
long fenzi = num*r2.den;
long fenmu = den*r2.num;
for(int i = 2;i<fenzi;i++){
if(fenzi%i==0&&fenmu%i==0){
fenzi = fenzi/i;
fenmu = fenmu/i;
}
}
return fenzi+"/" +fenmu;
}
/**************End*****************/
}
package com;
import java.util.*;
public class Rational_Test {
public static void main(String[] args){
Rational r1,r2;
Scanner scan=new Scanner(System.in);
int num1,den1,num2,den2;
num1=scan.nextInt();//使用scan()函数
den1=scan.nextInt();
num2=scan.nextInt();
den2=scan.nextInt();
r1=new Rational(num1,den1);//创建对象r1,
//调用构造函数Rational(),先对r1进行初始化
r2=new Rational(num2,den2);//创建对象r2.
//对r2进行初始化
// 此时r1,r2就可以调用Rational类中的所有方
//法add(),substract(),multiply(),divide()
System.out.println(r1.add(r2));//加
System.out.println(r1.substract(r2));//减
System.out.println(r1.multiply(r2));//乘
System.out.println(r1.divide(r2));//除
}
}
用辗转求余法来约分:
package bao;
import java.util.*;
public class Rational {
private long fenzi =0;
private long fenmu =0;
public Rational(long fenzi,long fenmu){
this.fenzi = fenzi;
this.fenmu =fenmu;
}
//辗转求余数约分。
***public long gcd(long a,long b){
if(a%b==0){
return b;
}
return gcd(b,a%b);
}***
public String add(Rational r2){
long fenzi1 = fenzi*r2.fenmu+fenmu*r2.fenzi;
long fenmu1 = fenmu*r2.fenmu;
long c =gcd(fenzi1,fenmu1);
fenzi1 /=c;
fenmu1/=c;
return fenzi1 +"/"+fenmu1;
}
}