c语言:求最小公倍数|练习题

发布时间:2023年12月28日

一、题目
输入两个数,求两数的最小公倍数。
如图:

9063904783984f67975c9d98a62b68d4.jpg

?

二、思路分析
1、先知道两个数里的最小值(比如:9和6,取6)
2、用2到6,5个数,同时除以9和6,得最小公约数:3
3、用9除3=3,6除3=2。得最小公倍数18(3*3*2=18)
4、如果两数没有最小公约数,则把原来的两个数相乘
比如:5和6,最小公倍数是5*6=30

三、代码截图【带注释】

34aa4454551b42a2b1995e54015ada5b.jpg

?

四、源代码【带注释】

#include <stdio.h>

//思路:
//1、先知道两个数里的最小值(比如:9和6,取6)
//2、用2到6,5个数,同时除以9和6,得最小公约数:3
//3、用9除3=3,6除3=2。得最小公倍数18(3*3*2=18)
//4、如果两数没有最小公约数,则把原来的两个数相乘
//比如:5和6,最小公倍数是5*6=30

int sct(int,int);//声明函数
int main()
{
? ? int x,y;
? ? printf("请输入两个大于1的数字:\n");
? ??
? ? //检测,如果x和y其中一个小于2,则重新输入
cc:
? ? scanf("%d",&x);
? ? scanf("%d",&y);
? ? if((x<2)||(y<2))
? ? {
? ? ? ? printf("输入有误,请重新输入。");
? ? ? ? goto cc;
? ? }
? ? printf("%d",sct(x,y));//引用函数
}

//求最大公倍数函数
int sct(int x, int y)
{
? ? int a,b,temp=1;
? ??
? ? //用a记录x与y中的最小值
? ? if(x>y)
? ? {
? ? ? ? a=y;
? ? ? ? b=x;
? ? }
? ? else
? ? {
? ? ? ? a=x;
? ? ? ? b=y;
? ? }
? ??
? ? //从2开始,不断加1,去除x和y
? ? //如果能整除,把i相乘,把相乘的值赋给temp
? ? //temp则为最小公约数
? ? for(int i=2; i<=a; i++)
? ? {
? ? ? ? if((x%i==0)&&(y%i==0))
? ? ? ? {
? ? ? ? ? ? temp=temp*i;
? ? ? ? }
? ? }
? ??
? ? //如果两数没有公约数,则把两数相乘
? ? //否则:(以9和6为例)
? ? //用9除3=3,6除3=2。得最小公倍数3*3*2=18
? ? if(temp==1)
? ? {
? ? ? ? temp=x*y;
? ? }
? ? else
? ? {
? ? ? ? temp=temp*(x/temp)*(y/temp);
? ? }
? ? return temp;
}

五、运行结果

f6abc55bbeb14115b29d0f1bcc6eba4a.jpg

?

关注我,每天分享编程知识

?

文章来源:https://blog.csdn.net/2301_76173427/article/details/135278685
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。