【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语言入门

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

相关文章
|
7月前
|
C语言
C语言之完数、素数、回文数合集
C语言之完数、素数、回文数合集
|
7月前
|
C语言
c语言编程练习题:7-45 找完数
c语言编程练习题:7-45 找完数
67 0
|
7月前
|
C语言
【汇编语言实战】最小公倍数和最大公约数
【汇编语言实战】最小公倍数和最大公约数
103 1
|
4月前
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
|
7月前
|
人工智能 BI C语言
c语言编程练习题:7-26 最大公约数和最小公倍数
c语言编程练习题:7-26 最大公约数和最小公倍数
49 0
|
7月前
|
C语言
c语言编程练习题:7-42 整除光棍
c语言编程练习题:7-42 整除光棍
72 0
|
算法 Java C语言
【C语言】一篇博客带你弄懂最大公约数和最小公倍数
【C语言】一篇博客带你弄懂最大公约数和最小公倍数
149 0
|
算法 C语言
C语言题解——最小公倍数的三种求法(含最大公约数)
最小公倍数是指能同时将两数整除的最小倍数,而最大公约数是则是能被两数同时整除的最小因数。最小公倍数有个特点,就是最小为两数中的较大值,最大为两数的乘积;最小公倍数则是最小为1,最大为两数中较小值(如果两数相同,那么最大公约数、最小公倍数是它们本身)🎉🎉🎉
351 1
C语言题解——最小公倍数的三种求法(含最大公约数)
|
存储 算法 C++
C/C++每日一练(20230516) 最佳时机、两数相加、后序遍历
C/C++每日一练(20230516) 最佳时机、两数相加、后序遍历
111 0