最大公约数和最小公倍数(c 语言)

简介: 最大公约数和最小公倍数(c 语言)

最大公约数:

方法一(简单遍历):

分析:

如果是两个数a 和 b(a   >   b),那么他们两个的最小公约数一定位于[1,  b]之间;

所以我们只需要在这个范围内进行简单的遍历即可求出最大公约数;

代码:

#include<stdio.h>
int main()
{
  long long a, b;
  long long min;
  scanf("%d %d", &a, &b);
  min = (a > b ? b : a);
  for (long long  i = 1; i <= min; i++)
  {
    if ((a % min == 0) && (b % min == 0))
    {
      printf("%lld", min);
      return 0;
    }
  }
}

方法二(辗转相除法):

该方法用递归的思路比较好写就是经典的gcd函数

假设 a > b;

让后令  a = b,    b = a  %  b;(1)

一直进行(1)直到 b = 0 的时候这时候的a就是最大公约数;

代码:

long long Gcd(long long a, long long b)
{
  if (b == 0)
    return a;
  else
  {
    return Gcd(b, a % b);
  }
}

方法三(更相减损法):

分析:a, b两个数字(a > b)

先将两个数字做差: a - b = c;

然后再将b和c之间做差,直到

b和c相等;

#include<stdio.h>
//更相减损法
void swap(int* a,int* b)
{
  if (*a < *b)
  {
    int t = *a;
    *a = *b;
    *b = t;
  }
}
int sub(int a, int b)
{
  swap(&a, &b);
  if (a - b == 0)
  {
    return a;
  }
  else
  {
    a = a - b;
    sub(a, b);
  }
}
int main()
{
  int a, b;
  scanf("%d %d", &a, &b);
  printf("%d", sub(a, b));
}

最小公倍数:

方法一(简单遍历):

分析:a, b (a  >  b)因为最小公倍数是一定大于a 且小于a * b 的,所以我们可以在[a, a * b]这个范围内遍历然后寻找最小公倍数

代码:

#include<stdio.h>
//计算最小公倍数
Common(int a, int b)
{
  int max = (a > b ? a : b);
  for (int i = max; i <= a * b; i++)
  {
    if ((i % a == 0) && (i % b == 0))
    {
      return i;
    }
  }
}
int main()
{
  int a, b;
  scanf("%d %d", &a, &b);
  printf("%d", Common(a, b));
}

方法二(利用最大公约数的计算结果):

最大公倍数等于两个数的乘积除以最大公约数

//辗转相除法计算
long long Gcd(long long a, long long b)
{
  if (b == 0)
    return a;
  else
  {
    return Gcd(b, a % b);
  }
}
int main()
{
  long long  a, b;
  scanf("%lld %lld", &a, &b);
  //先计算最大公约数
  //最大公倍数等于两个数字的其中一个数除以最大公倍数,在乘上另外一个数字就得到了最小公倍数
  printf("%d", a * b / Gcd(a, b));
}

方法三:单次循环的方法:

给其中一个数乘于自然数k,然后当这个乘积可以整除另外一个数的时候,那么这个乘积就是最小公倍数了

代码如下:

#include<stdio.h>
int main()
{
    int a, b;
    int i;
    scanf("%d%d", &a, &b);
    for(i = 1; i < b; i++)
       {
            if(a * i % b == 0)
       }
        printf("%d", i * a);
     return 0;
}

🍉如果帮到你了,点个赞👍吧,评论区也可以互相交流。

相关文章
|
6月前
|
人工智能 BI C语言
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
52 1
|
6月前
|
算法 C语言
C语言求最大公约数
C语言求最大公约数
|
6月前
|
算法 C语言
C语言中的最大公约数和最小公倍数,居然如此简单!
C语言中的最大公约数和最小公倍数,居然如此简单!
|
5月前
|
存储 安全 C语言
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
|
5月前
|
C语言
C语言---最大公约数和最小公倍数的求法
C语言---最大公约数和最小公倍数的求法
|
5月前
|
算法 C语言
C语言——最大公因数和最小公倍数
C语言——最大公因数和最小公倍数
371 0
|
6月前
|
C语言
C语言每日一练——Day02:求最小公倍数(3种方法)
C语言每日一练——Day02:求最小公倍数(3种方法)
|
6月前
|
C语言
C语言每日一练——Day01:求最大公约数(三种方法)
C语言每日一练——Day01:求最大公约数(三种方法)
|
6月前
|
C语言
最大公约数和最小公倍数(c语言)
最大公约数和最小公倍数(c语言)
|
6月前
|
C语言
C语言之九九乘法表||素数||最小公倍数
C语言之九九乘法表||素数||最小公倍数
61 0