如何在Java中将不正确的分数转换为带分数的数字?

时间:2019-05-05 00:58:46

标签: java fractions

我正在为2002年挑战赛尝试使用ccc j4或s2。我目前有一个简化分数的函数,但它以带分数形式给出。该函数的输出是一个字符串,我想我需要另一个函数将其转换为带分数。任何帮助,将不胜感激。谢谢!

这是我用来转换的函数:

public static long gcm(long a, long b) {
  return b == 0 ? a : gcm(b, a % b);
}

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

它输出的分数不正确,但是我想要一个混合数。我怎么能得到这个?附言英语不是我的母语。

1 个答案:

答案 0 :(得分:2)

由于这是挑战的一部分,所以我将避免提供确切的答案,但我要重点关注的是:混合数是整数,后跟适当的分数。您的分数不正确。您如何将不正确的分数转换为带分数?

让我们举一个简单的例子,例如11/4。我们如何将其写成混合分数?我们之所以写2 3/4,是因为:

  • 2是小于11/4的最大整数。
  • 2为8/4,将3/4保留为适当的分数。
  • 因此整数部分为2,适当的分数为3/4,为我们提供了答案。

因此,在分数n/d不正确的情况下,获得混合数字的一种方法是取k = floor[n/d],然后返回k + (n - kd)/d

希望有帮助!