求最小公倍数的三种方法以及对求最大公因数的补充 C语言从入门到入土(入门篇)(算法篇p4)
作者:互联网
目录
谁都不能阻挡你成为更优秀的人。
废话不多说,直接上代码。
求最小公倍数的三种方法
//法一:暴力(定义)求解
//最小公倍数的本质是一个最小的能同时被两整数整除的自然数
int main()
{
int m = 0;
int n = 0;
scanf("%d%d", &m, &n);
int a = 0;
a = ((m) > (n)) ? (m) : (n);
while (1)
{
if ((a % m == 0) && (a % n == 0))
{
break;
}
a++;
}
printf("%d", a);
return 0;
}
//法二:
int main()
{
int m = 0;
int n = 0;
int i = 1;
scanf("%d%d", &m, &n); //当然这里也可以是
while (((m * i) % n) != 0) // m*i%n
{
i++;
}
printf("%d", m*i); //注意这里
return 0;
}
//法三:最大公因数求解
//如求 3 12 最小公倍数 就是 3*12/3(最大公因数),
// 3 5 最小公倍数 就是 3*5/1 。
int main()
{
int m = 0;
int n = 0;
int c = 0;
int a = 0;
int b = 0;
scanf("%d%d", &m, &n);
a = m;
b = n;
while (c=a%b)
{
a = b;
b = c;
}
//注意这里只有b才是最大公因数,这是辗转相除法规定的,
//当然你也可以说是欧几里得法更帅不是嘛哈哈。
printf("%d",m*n/b);
return 0;
}
求最大公因数的补充:
//求最大公因数的两个补充,上面已经说到了辗转相除,
//这里就不过多赘述了。
//法一:更相减损法
//简单说:大的减小的,直到减数和差相等
int main()
{
int m = 0;
int n = 0;
scanf("%d%d", &m, &n);
while ((m - n) != 0)
{
if (m > n)
{
m=m - n;
}
else
{
n=n - m;
}
}
printf("%d", m);//n也行
return 0;
}
//法二:穷举法
//从两个数较小的数开始减,直到都能除尽。
int main()
{
int m = 0;
int n = 0;
scanf("%d%d", &m, &n);
int c = 0;
c = ((m) < (n)) ? (m) : (n);
for (c; c >= 1; c--)
{
if ((m % c == 0) && (n % c == 0))
{
printf("%d", c);
break;
}
}
return 0;
}
最后:感谢您的观看!
感谢您的支持!
如果没有关注的话就来个关注吧!你的支持是作者写作的最大动力!
谢谢!!!
标签:return,p4,公倍数,d%,int,main,公因数 来源: https://blog.csdn.net/weixin_62700590/article/details/121617961