【C初阶】最大公约数

简介: 最大公约数



文章目录


1.什么是公约数?

公约数,亦称“公因数”。 它是一个能同时整除几个整数的数 。 如果一个整数同时是几个整数的 约数 ,称这个整数为它们的“公约数”。

2.最大公约数

公约数中最大的称为最大公约数。 对任意的若干个正整数,1总是它们的公因数。 公约数与公倍数相反,就是既是A的约数同时也是B的约数的数,12和15的公约数有1,3,最大公约数就是3。 再举个例子,30和40,它们的公约数有1,2,5,10,最大公约数是10

3.最大公约数和最小公倍数的关系:

两个数的乘积/最大公约数=最小公倍数

4.解题引导

如18和6,我们可以知道两个数的最大公约数一定小于等于其中最小的那个数,那么要想实现最大公约数,必须先找出两个数中的最小值

然后再从6或比6小的数中寻找最小公约数

5.代码展示:

代码如下(示例):

#include<stdio.h>
int main() {
  int m = 0;
  int n = 0;
  scanf("%d %d", &m, &n);
  int min = (m < n ? m : n);
  while (1)
  {
    if (m % min == 0 && n % min == 0)
    {
      printf("%d", min);
      break;
    }
    min--;
  }
  return 0;
}

当然方法不只这一种,这种方法效率比较低

6.辗转相除法

介绍如图:

如图,用24除18取余数6

用18除6 取余为0

6就是这两个数的最大公约数

如上图如果我们把24看作m,把18看作n,余数如果不是0,就将n的值赋给m,余数的值赋给n

余数如果是0,n就是最大公约数

7.代码演示:

#include<stdio.h>//最大公约数
int main() {
  int m = 0;
  int n = 0;
  int r = 0;
  scanf("%d %d", &m, &n);
  while (r = m % n)
  {
    m = n;
    n = r;
  }
  printf("%d", n);
  return 0;
}

总结

这里所涉及的内容都比较基础,如果以上代码中有些语法不知道,说明基础太过薄弱

可以阅读我的系列文章【C】 C语言入门

当然只要有了明确的思路,这种代码还是非常好写的。

相关文章
|
23天前
|
C语言
C语言之完数、素数、回文数合集
C语言之完数、素数、回文数合集
|
1月前
|
算法 C语言
C语言中的最大公约数和最小公倍数,居然如此简单!
C语言中的最大公约数和最小公倍数,居然如此简单!
|
9天前
|
C语言
最大公约数和最小公倍数(c语言)
最大公约数和最小公倍数(c语言)
|
1月前
|
C语言
【C语言】Leetcode 两数之和 (含详细题解)
【C语言】Leetcode 两数之和 (含详细题解)
81 0
|
1月前
|
算法 C语言
C语言求最大公约数和最小公倍数
C语言求最大公约数和最小公倍数
14 0
|
4月前
|
人工智能 BI C语言
c语言编程练习题:7-26 最大公约数和最小公倍数
c语言编程练习题:7-26 最大公约数和最小公倍数
22 0
|
9月前
|
算法 Java C语言
【C语言】一篇博客带你弄懂最大公约数和最小公倍数
【C语言】一篇博客带你弄懂最大公约数和最小公倍数
87 0
|
9月前
|
算法 C语言
C语言—最大公约数和最小公倍数
C语言—最大公约数和最小公倍数
183 0
|
11月前
|
C语言
|
12月前
|
算法 C语言 C++
【C语言蓝桥杯每日一题】——等差数列
这道题,我用到了C语言中的qsort库函数,它是一种基于快排算法思想的排序函数。首先,想让大家认识一下qsort库函数的大概样子,和如何使用。
119 0