gpt4 book ai didi

java - 在 Java 中简化分数

转载 作者:IT老高 更新时间:2023-10-28 20:49:09 25 4
gpt4 key购买 nike

我的任务是开发一个理性的类(class)。如果 500 和 1000 是我的输入,那么 (½) 必须是我的输出。我自己写了一个程序来找到它。

是否有另一种找到解决方案的最佳方法,或者我的程序已经是最好的?

public class Rational {

public static void main(String[] args){

int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
int temp1 = n1;
int temp2 = n2;

while (n1 != n2){
if(n1 > n2)
n1 = n1 - n2;
else
n2 = n2 - n1;
}

int n3 = temp1 / n1 ;
int n4 = temp2 / n1 ;

System.out.print("\n Output :\n");

System.out.print(n3 + "/" + n4 + "\n\n" );
System.exit(0);
}
}

最佳答案

有趣的问题。下面是一些可执行代码,只需最少的代码:

/** @return the greatest common denominator */
public static long gcd(long a, long b) {
return b == 0 ? a : gcd(b, a % b);
}

public static String asFraction(long a, long b) {
long gcd = gcd(a, b);
return (a / gcd) + "/" + (b / gcd);
}

// Some tests
public static void main(String[] args) {
System.out.println(asFraction(500, 1000)); // "1/2"
System.out.println(asFraction(17, 3)); // "17/3"
System.out.println(asFraction(462, 1071)); // "22/51"
}

奖励方法:

/** @return the lowest common multiple */
public static long lcm(long a, long b) {
return a * b / gcd(a, b);
}

/** @return the greatest common denominator */
public static long gcd(List<? extends Number> numbers) {
return numbers.stream().map(Number::longValue).reduce((a, b) -> gcd(a, b)).orElseThrow(NoSuchElementException::new);
}

/** @return the lowest common multiple */
public static long lcm(List<? extends Number> numbers) {
return numbers.stream().map(Number::longValue).reduce((a, b) -> lcm(a, b)).orElseThrow(NoSuchElementException::new);
}

关于java - 在 Java 中简化分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com