C语言实现有理数连分数表示算法
#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 的函数,该函数接受两个整数 p 和 q 作为输入,分别代表有理数的分子和分母。函数使用循环和取模运算来计算连分数的每一个部分,并将它们打印出来。
在 main 函数中,程序首先读取用户输入的分子和分母,然后调用 print_continued_fraction 函数计算并输出连分数表示。
原文地址: http://www.cveoy.top/t/topic/Nsz 著作权归作者所有。请勿转载和采集!