输入两个正整数m和n,求其最大公约数和最小倍数。
首先我要知道什么是最大公约数和最小倍数,这里就要扯到数学了,可能有很多同学看到数学就头疼,一个头俩个大,没办法啦,像这种题目,只要知道什么是最大公约数和最小倍数,怎么求最大公约数和最小倍数,这道题数学知识就学到这里,还是挺简单滴,小学就学过了,怕啥。
问题1.什么是最大公约数和最小倍数:把能够整除某一个数的数,叫做这个数的约数.几个数所公有的约数叫这几个数的公约数.公约数中最大的一个叫做这几个数的最大公约数. 几个数所公有的倍数,叫做这几个数的公倍数.公倍数中最小的一个(零除外)叫做这几个数的最小公倍数.
问题2.怎么求最大公约数和最小倍数:采用辗转相除法。
注意事项:
已经了解差不多啦,上代码。
#include<stdio.h> int main() { printf("请输入两个数:"); //提示输入 int x, y; //定义两个变量 int r; //定义余数 scanf("%d,%d", &x, &y); //输入 int z = x * y; //算法之一的代码,目的输出最小公倍数 if (x < y) //判断两数的大小,实现最大的数放在前面 { int temp = x; x = y; y = temp; } while (y!=0) //循环,当y==0时,结束循环 { r = x % y; x = y; y = r; } printf("最大公约数为:%d\n", x); //输出最大公约数 printf("最小公倍数为:%d\n", z/x); //输出最小公倍数 return 0; }
#include<stdio.h> //这里是用函数的方法来解决的 int hcf(int u, int v) //如果有不会的小伙伴留言给我呀 { int t, r; if (v > u) { t = u; u = v; v = t; } while ((r = u % v) != 0) { u = v; v = r; } return v; } int lcd(int u, int v, int h) { return (u * v / h); } int main() { int u, v, h, l; scanf("%d %d", &u, &v); h = hcf(u, v); printf("H.C.F=%d\n", h); l = lcd(u, v, h); printf("L.C.D=%d\n", l); return 0; }
咱们这期的题目就到这里啦,有啥问题呢,可以留言告诉我哟,有啥不对的地方,请大佬指点。