十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
要先写一个gcd的方法,greatest common divisor,即最大公约数。你拿到了最大公约数,拿需要约分的两个数除以最大公约数就行。
创新互联公司致力于成都网站建设、网站建设,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联公司,就选择了安全、稳定、美观的网站建设服务!
public int GCD(int a, int b) {
if (b==0) return a;
return GCD(b,a%b);
}
根据题意可得如下代码:
public class Fraction {
private int numerator;
private int denominator;
public Fraction(int x, int y){
this.numerator = x;
this.denominator = y;
}
public Fraction(){
}
public String toString(){
return this.numerator+"/"+this.denominator;
}
public void Simple(){
int i = this.numerator;
if (i this.denominator){
i = this.denominator;
}
for (; i = 1; --i){
if (this.numerator%i == 0 this.denominator%i == 0)break;
}
this.numerator /= i;
this.denominator /= i;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Fraction f = new Fraction(48, 72);
f.Simple();
System.out.println(f.toString());
}
}
;
实现辗转相除法()的代码可以很简洁(如下)。
应当一提的是,下面的 最大公约数( ) 函数的实现若改成以下这一句会更简洁更高效:
return b == 0 ? a : 最大公约数( b, a % b );
还有,java 标准库里的 BigInteger 类有提供求最大公约数的方法。
import java.math.*;
class C {
static int 最大公约数( int a, int b ) {
return a % b == 0 ? b : 最大公约数( b, a % b );
}
public static void main( String[ ] args ) {
int 分子 = 123456,
分母 = 7890;
System.out.println( "分数:" + 分子 + "/" + 分母 );
System.out.print( "约分后的结果是 " );
int gcd = 最大公约数( 分子, 分母 );
System.out.println( 分子 / gcd + "/" + 分母 / gcd );
////////////////////////////////////////////////////////////////////////
System.out.print( "利用 BigInteger 的 gcd( ) 求出的结果也是 " );
BigInteger fz = BigInteger.valueOf( 分子 ),
fm = BigInteger.valueOf( 分母 ),
BIgcd = fz.gcd( fm );
System.out.println( fz.divide( BIgcd ) + "/" + fm.divide( BIgcd ) );
}
}
根据题意可得如下代码: public class Fraction { private int numerator; private int denominator; public Fraction(int x, int y){ this.numerator = x; this.denominator = y; } public Fraction(){ } public String toString(){ return this.numerator+"/"+this.denominator; } public void Simple(){ int i = this.numerator; if (i this.denominator){ i = this.denominator; } for (; i = 1; --i){ if (this.numerator%i == 0 this.denominator%i == 0)break; } this.numerator /= i; this.denominator /= i; } public static void main(String[] args) { // TODO Auto-generated method stub Fraction f = new Fraction(48, 72); f.Simple(); System.out.println(f.toString()); }}