【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)

简介: 【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)

本系列博客为个人刷题思路分享,有需要借鉴即可。

1.题目链接:

2.详解思路:

题目描述:输入两个正整数,输出其最大公因数和最小公倍数

一般方法:最大公因数:穷加法;最小公倍数:穷举法。

巧妙方法:最大公因数:辗转相除法;最小公倍数:数学公式。

下面是一般方法的代码示例:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  int GreComDiv = 0;
  scanf("%d %d", &a, &b);
  int min = a < b ? a : b;
  int i = 0;
  //最大公约数——穷加法
  for (i = 1; i <= min; i++)
  {
    if (a % i == 0 && b % i == 0)
      GreComDiv = i;
  }
  int lcm = 0;
  int max = a > b ? a : b;
  //最小公倍数——穷乘法
  for (i = 1;; i++)
  {
    if (((i * max) % a == 0) && ((i * max) % b == 0))
    {
      lcm = i * max;
      break;
    }
  }
  printf("最大公约数为%d 最小公倍数为%d\n", GreComDiv, lcm);
  return 0;
}

下面是比较巧妙的方法代码示例:

int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  int c = a;
  int d = b;
  while (a && b)
  {
    if (a > b)
      a %= b;
    else
      b %= a;
  }
  int max = a > b ? a : b;//最大公因数
  int min = c * d / max;//最小公倍数
  printf("最大公约数为%d 最小公倍数为%d\n", max, min);
  return 0;
}

具体为什么可以这样搞,可以去B站搜一下辗转相除法相关视频自己看一下。


完。

相关文章
|
9月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
8月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
4月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
39 0
|
6月前
|
算法 Python
【Leetcode刷题Python】改进的算法,高效求一个数的因子
一个高效的Python函数用于找出一个整数的所有因子,通过仅遍历到该数平方根的范围来优化性能。
56 0
|
8月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
8月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
8月前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
|
8月前
|
算法
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
|
8月前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素
|
8月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】环形链表的约瑟夫问题
【数据结构与算法 刷题系列】环形链表的约瑟夫问题

热门文章

最新文章