【C语言蓝桥杯每日一题】—— 既约分数
【C语言蓝桥杯每日一题】—— 既约分数😎
- 前言🙌
- 既约分数🙌
- 递归版解题代码:😍
- 非递归版解题代码:😍
- 总结撒花💞
既约分数😎)

😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
前言🙌
哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 既约分数~ 都是精华内容,可不要错过哟!!!😍😍😍
既约分数🙌
解题思路分析: 😍
- 这道题其实考察的是求最大公约数的问题,这道题偶然比较简单,但是你经常刷题的时候会发现,很多题都是基于一些基础然后延伸出来的。今天刚好遇到这道题,也当复习一下。
- 这里主要用到的是辗转相除法来求最大公约数。之前我也写了一篇关于求最小公倍数几种方法的博客,利用 最大公约数 乘以 最小公倍数 = 两个数 的乘积的关系,知道一个就可以求得另外一个。大家可以点击阅读一下。博客链接: 你是真的“C”——求两个正数最小公倍数的3种境界~
递归版解题代码:😍
#include <stdio.h>
#include <stdlib.h>int f(int i,int j)
{if(i % j == 0)return j;elsereturn f(j,i % j);
}int main(int argc, char *argv[])
{int i = 0;int j = 0;int sum = 0;for (i = 1; i <= 2020; i++){for (j = 1; j <= 2020; j++){if(f(i,j) == 1)sum++;}}printf("%d",sum);return 0;
}
非递归版解题代码:😍
#include <stdio.h>
#include <stdlib.h>int f(int i,int j)
{int t = 0;while(j != 0){t = i % j;i = j;j = t;}
}int main(int argc, char *argv[])
{int i = 0;int j = 0;int sum = 0;for (i = 1; i <= 2020; i++){for (j = 1; j <= 2020; j++){if(f(i,j) == 1)sum++;}}printf("%d",sum);return 0;
}
程序输出结果验证: 😊
总结撒花💞
本篇文章旨在分享【C语言蓝桥杯每日一题】—— 既约分数。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘