当前位置:网站首页>C语言 最大公约数,最小公倍数(详细注释代码 一次解决)
C语言 最大公约数,最小公倍数(详细注释代码 一次解决)
2022-08-09 13:23:00 【东区东区!】
我们采用欧几里德算法(Euclidean algorithm),是求两个正整数之最大公约数的算法。
具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
#include<stdio.h>
int gcd(int long long a,int long long b); //声明我们要定义的函数
int gcd(int long long a,int long long b) //定义gcd函数
{
int long long t,r; //定义长整形
if(a<b) //用较大数除以较小数,再用出现的余数(第一余数)
//接上:去除除数,再用出现的余数(第二余数)去除第一余数
{
t=a;
a=b;
b=t;
}
r=a%b;
if(r==0) //如果直接a对b取余为0,那么直接b就是最小公约
{
return b;
}
else
{
return gcd(b,r); //若取不到0,那么便进行递归,再次执行定义的函数
}
}
int main(void) //主函数
{
int long long m,n,r; //长整型
scanf("%lld %lld",&m,&n); //输入你要求的2个数
r=gcd(m,n); //用定义的gcd函数得到你的结果
printf("%lld %lld\n",r, m*n/r);
return 0;
}
运行结果无报错,且成功执行
边栏推荐
猜你喜欢
随机推荐
源码编译安装LAMP
哈希表卡片
11. cuBLAS Development Guide Chinese version--Level-1 functions amax() and amin() in cuBLAS
Kotlin入门,应从“这些”学起。
KMP方法
X264性能优化
禁止输入(×),按键精灵小程序,快速上手
学习opencv-基础应用
Spark GC日志分析
CutefishOS系统默认自动桌面壁纸
力扣学习路径
From the Dutch flag problem to the optimization and upgrade of quick row
蓝桥历届真题-既约分数
PO、DO、TO、VO、DO、DTO、DAO、POJO都是什么?
机器学习web服务化实战:一次吐血的服务化之路 (转载非原创)
Code of Conduct for Firefighters
Spark Sql之union
Jetpack Compose——Image(图片)的使用
FFmpeg av_interleaved_write_frame错误
音视频录入的pts和dts问题









