埃及分数式
Posted rowry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了埃及分数式相关的知识,希望对你有一定的参考价值。
问题描述
分子是1的分数,叫做单位分数.古代埃及人在进行分数运算时,只使用分子是1的分数,依次这种分数也叫埃及分数式,或者叫单分子分数.
要求随便输入一个真分数,将该分数分解为埃及分数式,如 3/7 = 1/3 + 1/11 + 1/231.
算法思路
- 埃及分数式式"不定长"的问题,这种不好循环,所以采用递归的思路
- 对于一个真分数a/b,找到最接近的1/k
- 如果b % a == 0 => k = b/a
如果b % a != 0 => k = b/a + 1
代码示例
Python
# 递归思路 => 具体个数是不知道的
def fun(a, b):
k = int(b / a)
if b % a == 0:
res = "1/%s" % k
else:
k += 1
res = "1/%s + %s" % (k, fun(a * k - b, b * k))
return res
print(fun(3, 8))
Java
// 埃及分数式 => 递归
public class 埃及分数式 {
// a: 分子 b: 分母
static String fun(int a, int b) {
String res = "";
int k = b / a;
if (b % a == 0) {
res += "1/"+k;
}else{
k++;
res += "1/"+k+" + "+fun(a * k -b,b*k);
}
return res;
}
public static void main(String[] args) {
System.out.println(fun(3,7));
}
}
以上是关于埃及分数式的主要内容,如果未能解决你的问题,请参考以下文章