1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > C语言例题——输入两个正整数m和n 求其最大公约数和最小公倍数。

C语言例题——输入两个正整数m和n 求其最大公约数和最小公倍数。

时间:2019-09-26 06:24:37

相关推荐

C语言例题——输入两个正整数m和n 求其最大公约数和最小公倍数。

#include "stdio.h"void main() {//接收输入的两个数中的较大值和较小值int max, min;//用于for循环int i;//接收输入的两个数int m, n;//a接收最大公约数 b接收最小公倍数int a, b;printf("请输入两个正整数:");scanf("%d%d", &m, &n);//判断两个数的大小关系max = m > n ? m : n;min = m > n ? n : m;//如果输入的两个数是倍数关系,那么较大值为两者的最小公倍数,较小值为两者最大公约数if (max % min == 0) {a = min;b = max;printf("%d和%d的最大公约数是%d,最小公倍数是%d", max, min, a, b);} else {//如果不成倍数关系//求最大公约数 从2开始遍历到 min/2 //默认最大公约数是1a = 1;for (i = 2; i <= min/2; i++) {if (max % i == 0 && min % i == 0) {a = i;}}//求最小公倍数 从max开始遍历到 max*min//默认最小公倍数是两者的较大值b = max;for (i = max; i <= max * min; i++) {if (i % max == 0 && i % min == 0) {b = i;//找到最小公倍数后结束循环break;}}printf("%d和%d的最大公约数是%d,最小公倍数是%d", max, min, a, b);}}

辗转相除法求最大公约数:

辗转相除法, 又名欧几里得算法(Euclidean algorithm),目的是求出两个正整数的最大公约数。它是已知最古老的算法, 其可追溯至公元前300年前。 这条算法基于一个定理:两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。比如10和25,25除以10商2余5,那么10和25的最大公约数,等同于10和5的最大公约数。

#include "stdio.h"void main(){int m,n;int r; printf("请输入两个数:");scanf("%d%d",&m,&n);//r是余数r=m%n;while(r){m=n;n=r;r=m%n;} printf("这两个数的最大公约数是:%d",n); }

初学C语言,如有错误,还望指正,因考试需要,代码运行环境为:

不同编译器和不同版本C语言代码略有不同。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。