重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
;
专注于为中小企业提供网站制作、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业和林格尔免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
实现辗转相除法()的代码可以很简洁(如下)。
应当一提的是,下面的 最大公约数( ) 函数的实现若改成以下这一句会更简洁更高效:
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()); }}
要先写一个gcd的方法,greatest common divisor,即最大公约数。你拿到了最大公约数,拿需要约分的两个数除以最大公约数就行。
public int GCD(int a, int b) {
if (b==0) return a;
return GCD(b,a%b);
}
/**
* 输出分子分母约分后结果
* @param denominator 分母
* @param numerator 分子
*/
public void reducing(int denominator,int numerator){
//即求出最大公因数
int smaller = numeratordenominator?numerator:denominator;
int maxCommonFactor = 1;
for (int i = 1; i = smaller; i++) {
if(numerator%i==0 denominator%i==0){
maxCommonFactor = i;
}
}
System.out.println("result:"+denominator/maxCommonFactor+"/"+numerator/maxCommonFactor);
}