埃及分数 发表于 2020-06-30 题目描述1分子为1的分数称为埃及分数。现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数。如:8/11 = 1/2+1/5+1/55+1/110。 输入描述1输入一个真分数,String型 输出描述1输出分解后的string 示例输入18/11 输出11/2+1/5+1/55+1/110 思路 代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768package mainimport "fmt"func main() { for { var a, b int _, err := fmt.Scanf("%d/%d", &a, &b) if err != nil { return } var x = gcd(a, b) a /= x b /= x var try bool var result []int for { if b % a == 0 && try { result = append(result, b / a) break } var p = b/a + 1 result = append(result, p) a = a * p - b b *= p try = true } for i, v := range result { fmt.Printf("1/%d", v) if i < len(result) - 1 { fmt.Print("+") } else { fmt.Print("\n") } } }}func gcd(a, b int) int { if a == 1 || b == 1 { return 1 } var min int if a >= b { min = b } else { min = a } var result = 1 for i := 2; i <= min; i++ { if a % i == 0 && b % i == 0 { a /= i b /= i min /= i result *= i } } return result}