美文网首页
将真分数分解为埃及分数

将真分数分解为埃及分数

作者: 一路向后 | 来源:发表于2021-10-24 21:21 被阅读0次

    1.问题描述

    现输入一个真分数,请将该分数分解为埃及分数。

    2.问题分析

    真分数: 分子比分母小的分数,叫做真分数。
    分子为1的分数,叫单位分数。古代埃及人在进行分数运算时,只使用分子是1的分数,因此这种分数也叫做埃及分数,或者叫做单位分子分数。
    如: 8/11 = 1/2 + 1/5 + 1/55 + 1/110。
    我们约定分子分母都是自然数,分数的分子用a表示,分母用b表示。
    若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数;若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为(b/a)+1的埃及分数。用这种方法将剩余部分反复分解,最后可得到结果。

    3.源码实现

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        int a, b, c;
    
        printf("请输入一个分数(a/b): ");
    
        scanf("%d/%d", &a, &b);
    
        while(1)
        {
            if(b % a != 0)
            {
                c = b / a + 1;
            }
            else
            {
                c = b / a;
                a = 1;
            }
    
            if(a == 1)
            {
                printf("1/%d\n", c);
                break;
            }
            else
            {
                printf("1/%d + ", c);
            }
    
            a = a * c - b;
            b = b * c;
    
            if(a == 3 && b % 2 == 0)
            {
                printf("1/%d + 1/%d\n", b/2, b);
                break;
            }
        }
    
        return 0;
    }
    

    4.编译源码

    $ gcc -o test test.c -std=c89
    

    5.运行及其结果

    ./test
    请输入一个分数(a/b): 3/5
    1/2 + 1/10
    

    相关文章

      网友评论

          本文标题:将真分数分解为埃及分数

          本文链接:https://www.haomeiwen.com/subject/qmsdaltx.html