C语言每日一练——Day01:求最大公约数(三种方法)

简介: C语言每日一练——Day01:求最大公约数(三种方法)

一、什么是公约数?

公约数,就是能同时整除几个整数的整数。最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。

例如: 2能整除4,2能整除8;4能整除4,4能整除8,所以说(2和4)是(4和6)的公约数,而4是(2和4)的最大公约数。

二、求解两个数的最大公约数

🍑1、枚举法

思路: 假设两个数字a和b,比较出更小的数字赋值给变量min,遍历1min的整数,找到所有能共同被a和b整除的数字,其中数值最大的便是所求最大公约数。

📝代码展示

//枚举法
#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d",&a,&b);
  int min = (a < b ? a : b);
  while (a % min != 0 || b % min != 0)//如果不能同时整除
  {
    min--;
  }
  printf("%d",min);
  return 0;
}

🍑2、相减法

思路: 假设两个数字a和b,如果a>b,则a=a-b;如果b>a,则b=b-a。一直循环计算直到a=b,则此时a、b的值即为所求最大公约数。

📝代码展示:

//相减法
#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d",&a,&b);
  while (a != b)//直到两个数相等
  {
    if (a > b)
    {
      a = a- b;
    }
    else
    {
      b = b - a;
    }
  }
  printf("%d",a);
  return 0;
}

🍑3、辗转相除法

思路: 假设两个数字a和b,求两个数字相除的余数c=a%b,如果余数为0,则b为最大公约数。如果b不为零,a=b,b=c,继续循环计算。

📝代码展示:

//辗转相除法
#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d",&a,&b);
  while (a%b != 0)//如果不能整除
  {
    int c = a % b;
    a = b;
    b = c;
  }
  printf("%d",b);
  return 0;
}

📖总结

  • 三种方法穷举法效率最低
  • 推荐使用辗转相除法和相减法


目录
打赏
0
0
0
0
21
分享
相关文章
|
2月前
|
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
98 15
|
2月前
|
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
106 18
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
103 6
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
51 3
|
9月前
|
c语言左旋字符串问题(不同方法超详细解答)
c语言左旋字符串问题(不同方法超详细解答)
52 1
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
【C语言刷题每日一题】——求最大公约数(带数学计算过程详解)
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
详细解读C语言程序设计:现代方法(第2版)第二章全部习题答案
70 0
|
9月前
|
C语言---求一个整数存储在内存中的二进制中1的个数--3种方法
C语言---求一个整数存储在内存中的二进制中1的个数--3种方法
96 0
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
80 23
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等