一、原理
基于辗转相除法
二、实现
1、获取最大公约数
function getGCD(m,n){
var result = 0;
while (n != 0) {
result = m % n;
m = n;
n = result;
}
return m;
}
2、最简整数比
function simple(a,b){
//转整数_start
var aStr = a+"".split(".");
var aLength = aStr.length>1?aStr[1].length:0;
var bStr = b+"".split(".");
var bLength = bStr.length>1?bStr[1].length:0;
var max = aLength>bLength?getCF(aLength):getCF(bLength);
a = a * max;
b = b * max;
//转整数_end
var gcd = getGCD(a,b);
console.log((a/gcd)+":"+(b/gcd));
}
//根据小数点的位数乘对应的比例
function getCF(num){
var result = 1;
for (var i=0;i<num;i++){
result = result *10;
}
return result;
}
function getGCD(m,n){
var result = 0;
while (n != 0) {
result = m % n;
m = n;
n = result;
}
return m;
}
3、最小公倍数
function multiple(a,b){
var gcd = getGCD(a,b);
console.log(a*(b/gcd));
console.log(b*(a/gcd));
}
function getGCD(m,n){
var result = 0;
while (n != 0) {
result = m % n;
m = n;
n = result;
}
return m;
}
js
simple(28,35);
simple(27,36);
//最简整数比
function simple(a,b){
var gcd = getGCD(a,b);
console.log((a/gcd)+":"+(b/gcd));
}
//最小公倍数
function multiple(a,b){
var gcd = getGCD(a,b);
console.log(a*(b/gcd));
console.log(b*(a/gcd));
}
//最大公约数
function getGCD(m,n){
var result = 0;
while (n != 0) {
result = m % n;
m = n;
n = result;
}
return m;
}
java
public class Test{
public static void main(String[] args){
simple(28,35);
simple(27,36);
}
//最简整数比
public static void simple(a,b){
var gcd = getGCD(a,b);
System.out.print((a/gcd)+":"+(b/gcd));
}
//最小公倍数
public static int multiple(a,b){
var gcd = getGCD(a,b);
return a*(b/gcd);
//return b*(a/gcd);
}
//最大公约数
public static int getGCD(m,n){
var result = 0;
while (n != 0) {
result = m % n;
m = n;
n = result;
}
return m;
}
}