2 shishuoxx shishuoxx 于 2014.08.06 13:04 提问

请教JAVA如何得到两个数 之前的最小比例

比如 5:10 = 1:2 45:60 = 3:4

自己心算一下就算出来了,写函数完全没有办法,高手请帮帮忙!

3个回答

slamzwl
slamzwl   2014.08.06 14:22

数学问题,求两个数的最大公约数问题。多个数的最小比例,就求多个数的最大公约数。
然后每个数字除以最大公约数,就是他们的简化比例。最大公约数可用辗转相除法。

little623
little623   2014.08.06 14:56

public class Test {

public static void main(String[] args) {
    minScale(60, 15);
}

public static void minScale(int a, int b) {
    int tmp = a;
    if(a > b) {
        tmp = b;
    }
    for(int i = tmp; i > 0; i--) {
        if(a % i == 0 && b % i ==0) {
            System.out.println(a + ":" + b + "=" + (a / i) + ":" + (b / i));
            break;
        }
    }
}

}

zhufaming12
zhufaming12   2014.08.06 22:12

这是答案希望对你有用,测试通过,关键是求出两数的最大公约数:
package uhz8_5;

import java.io.ObjectInputStream.GetField;
import java.util.Scanner;

public class MinBi {

public static void main(String[] args) {
    // TODO Auto-generated method stub
        Scanner scn=new Scanner(System.in);
        System.out.print("请输入第一个数:");
        int a=scn.nextInt();
        System.out.print("请输入第二个数:");
        int b=scn.nextInt();
        MinBi mb=new MinBi();
        int c=mb.getMaxGY(a, b);
        System.out.println("输入两数的最简整数比如下:");
        System.out.print(a+":"+b+"="+a/c+":"+b/c);
}
public  int getMaxGY(int m,int n){
    //求最大公约数
    if(m==n){
        return n;
    }else{
        while(m%n!=0){![CSDN移动问答][1]
        int temp=m%n;
        m=n;
        n=temp;
     }
     return n;
    }
}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#中得到两个数百分比
C#求百分比 double a=50; double b=100;   没有小数部分 Label1.Text = (a   /   (a+b)).ToString("0%")    两位小数 Label2.Text =   (a   /   (a+b)).ToString("P")    ToString("0.00%"); ToString("P3");
随笔记:Java 计算两个数值百分比
public String getnum(int num1,int num2){ NumberFormat numberFormat = NumberFormat.getInstance(); // 设置精确到小数点后2位 numberFormat.setMaximumFractionDigits(2); String result
java中三元运算符取最大值
   练习1在java中三元运算符是基础部分,懂得它的运用,即可。  1,使用三元运算符,获取两个数中较大的数 2,使用三元运算符,获取三个数中较大的数import java.util.Scanner; import org.junit.Test; public class test1 { @Test public void test(){ //使用三元运算符,获取两个数中较大的数 ...
两个数相除计算百分比
<br /> string signal = "5"; decimal value = Convert.ToDecimal(signal) / 31; //小数据取两位 int result = (int)(Math.Round(value, 2) * 100); this.lbSingle.Text = result + "%";
java 随机长度10位数组,输入两个数字,找出差值最小的
import java.util.Scanner; public class Randm { public static void main(String[] args) { int [] a = new int [10]; for(int i = 0; i < a.length; i++){ a[i] = (int)(100* Math.random()); Sy
CCF 最小差值
一、试题问题描述   给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式   输入第一行包含一个整数n。   第二行包含n个正整数,相邻整数之间使用一个空格分隔。 输出格式   输出一个整数,表示答案。 样例输入 5 1 5 4 8 20 样例输出 1 样例说明   相差最小的两个数是5和4,它们之间的差值是1。 样例输入 5 9
[算法学习]栈中的最小值
问题描述: 实现栈的pop、push、 min (得到栈中最小值)方法。 解法与分析: 1. 由于每次压栈和出栈都可能会改变栈中的最小值,所以,我们增加一个存放最小值的栈。 2. 当出栈操作时,最小值的栈也出栈;(当然,必须判断栈是否为空) 3. 当压栈操作时,比较压栈元素值和最小栈的栈顶元素的大小,若比较小,则将它压入栈中,若不是,则将最小栈的栈顶元素重复压栈。(当然
CCF2017.12-1最小差值
问题描述  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。输入格式  输入第一行包含一个整数n。  第二行包含n个正整数,相邻整数之间使用一个空格分隔。输出格式  输出一个整数,表示答案。样例输入51 5 4 8 20样例输出1样例说明  相差最小的两个数是5和4,它们之间的差值是1。样例输入59 3 6 1 3样例输出0样例说明  有两个相同的数3,它们之间的差值
20171223Java基础学习——编程题练习<黄金分割比>
[Q]寻找某两个数相除,其结果离黄金分割点 0.618最近。需满足: 分母和分子不能同时为偶数 分母和分子 取值范围在[1-20] [A]:public class HelloWorld{ public static void main(String[] args) { float i, j, m = 0
java 求两个数的最大公约数
用 Java实现 输入两个数 求两个数的最大公约数,如何使用java语言求两个数的最大公约数