#include <stdio.h>

void print_continued_fraction(int p, int q) {
    int a = p / q;
    int r = p % q;
    
    printf('%d ', a);
    
    while(r != 0) {
        p = q;
        q = r;
        a = p / q;
        r = p % q;
        
        printf('%d ', a);
    }
}

int main() {
    int p, q;
    scanf('%d %d', &p, &q);
    
    print_continued_fraction(p, q);
    
    return 0;
}

题目描述

给出一个正有理数 p/q,其中 p,q 均为正整数且互质,请求出它的连分数表示 [a0; a1, a2, ..., ak]。

输入

一行两个正整数 p,q,表示给出的有理数 p/q,保证 p,q 均为 int 范围内的正整数且互质。

输出

一行若干个整数 a0, a1, ..., ak,中间用空格隔开,表示 p/q = [a0; a1, a2, ..., ak]。

示例

输入:

5 3

输出:

1 1 2

解释

根据题目给出的设定,我们可以得到以下连分数表示: p/q = 5/3 = 1 + 2/3 = [1; 1, 2]

代码解释

代码中定义了一个名为 print_continued_fraction 的函数,该函数接受两个整数 pq 作为输入,分别代表有理数的分子和分母。函数使用循环和取模运算来计算连分数的每一个部分,并将它们打印出来。

main 函数中,程序首先读取用户输入的分子和分母,然后调用 print_continued_fraction 函数计算并输出连分数表示。

C语言实现有理数连分数表示算法

原文地址: http://www.cveoy.top/t/topic/Nsz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录