C语言 如何求两整数的最大公约数与最小公倍数

下面是C语言如何求两整数的最大公约数与最小公倍数的完整攻略。

求最大公约数

理论知识

两个数的最大公约数是它们的公共因数中最大的一个数。求两个数的最大公约数也就是求这两个数的所有公因数中最大的一个数。

有很多算法可以用来求最大公约数,其中最常用的两种是辗转相减法和欧几里得算法(辗转相除法)。

代码示例

#include <stdio.h>
int GCD(int m, int n) {
    while(m != n) {
        if(m > n) {
            m = m - n;
        } else {
            n = n - m;
        }
    }
    return m;
}
int main() {
    int a, b;
    printf("请输入两个整数:\n");
    scanf("%d%d", &a, &b);
    printf("%d和%d的最大公约数为%d\n", a, b, GCD(a, b));
    return 0;
}

示例说明

假设 a = 12,b = 20。

我们就可以从 a - b 开始,得到 8 和 20。然后再从 20 - 8 得到 12 和 8。此时它们相等,因此得到了 4 和 8 的最大公约数,即 4。

求最小公倍数

理论知识

两个数的最小公倍数是它们的公共倍数中最小的一个数。求两个数的最小公倍数也就是求这两个数的所有公倍数中最小的一个数。

最小公倍数等于两个数的乘积除以它们的最大公约数。

代码示例

#include <stdio.h>
int GCD(int m, int n) {
    while(m != n) {
        if(m > n) {
            m = m - n;
        } else {
            n = n - m;
        }
    }
    return m;
}
int LCM(int m, int n) {
    return m * n / GCD(m, n);
}
int main() {
    int a, b;
    printf("请输入两个整数:\n");
    scanf("%d%d", &a, &b);
    printf("%d和%d的最小公倍数为%d\n", a, b, LCM(a, b));
    return 0;
}

示例说明

假设 a = 12,b = 20。

首先求得 a 和 b 的最大公约数 GCD(a, b) = 4。

然后通过最小公倍数公式 LCM(a, b) = a * b / GCD(a, b) 得到最小公倍数 LCM(a, b) = 60。

以上就是 C 语言如何求两整数的最大公约数与最小公倍数的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言 如何求两整数的最大公约数与最小公倍数 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Golang 如何解析和生成json

    下面是关于 “Golang 如何解析和生成json” 的完整攻略。 什么是json 首先,我们需要了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript语法,可以被多种编程语言所支持。在Golang中,需要使用标准库中的encoding/json包来解析和生成JSON格式的数…

    C 2023年5月23日
    00
  • 收集json解析的四种方法分享

    收集JSON解析的四种方法分享 在Web开发中,处理JSON是必不可少的一部分,而JSON解析也是必须要掌握的技能之一。下面分享一些常用的JSON解析方法以及它们的特点,希望对您有所帮助。 使用JavaScript原生解析方法 如果需要解析JSON字符串,可以使用JavaScript中原生提供的JSON.parse方法。该方法将JSON字符串转换为JavaS…

    C 2023年5月23日
    00
  • Java实现API sign签名校验的方法详解

    Java实现API sign签名校验的方法详解 简介 在互联网应用的开发过程中,API被广泛应用。而在API的开发过程中,为了确保API的安全性,一般都会使用签名验证的方式进行校验。而在Java中,实现API sign签名校验的方法也是比较简单的。 签名算法的原理 在进行签名校验之前,我们先来了解一下签名算法的原理。 签名算法是指通过一定的算法和密钥来对一个…

    C 2023年5月23日
    00
  • C语言链表实现简单图书管理系统

    C语言链表是一种常用的数据结构,通过链表可以实现一些比较复杂的数据管理系统。本篇攻略将讲解如何使用C语言链表实现一个简单的图书管理系统。整个系统的实现分为以下几步: 定义图书数据结构。在本例中,我们需要使用结构体来存储每一本图书的信息,如图书编号、图书名称、图书作者等。 struct Book { int id; char title[50]; char a…

    C 2023年5月23日
    00
  • C++实现多源最短路径之Floyd算法示例

    C++实现多源最短路径之Floyd算法示例 多源最短路径问题是指在给定图中任意两个顶点之间的最短路径问题。Floyd算法是解决该问题的一种经典算法,效率较低,但实现简单。 本篇文章将详细讲解如何使用C++语言实现Floyd算法,主要包含以下内容: 代码实现 算法详解 示例说明 代码实现 #include<iostream> using names…

    C 2023年5月22日
    00
  • 电脑开机黑屏错误提示0xc0000e9怎么办?

    电脑开机黑屏错误提示0xc0000e9的解决方法 问题描述 当你从电脑开机时,如果出现了“电脑开机黑屏错误提示0xc0000e9”的错误,那么说明电脑在启动过程中遇到了一些问题,无法正常启动。这时电脑会停在黑屏界面,无论你进行任何操作,都无法进入系统。此时应该如何处理呢? 解决方法 方法一:检查硬件连接 0xc0000e9错误通常是硬件损坏或者连接错误导致的…

    C 2023年5月23日
    00
  • C语言结构体版学生成绩管理系统

    下面就结构体版学生成绩管理系统的完整攻略进行详细讲解,包括操作流程、代码实现和两个实例说明。 操作流程 首先要定义一个结构体,用于存储学生成绩相关的信息,比如学号、姓名、数学成绩、语文成绩、英语成绩等。 接着,需要定义一个数组,用于存储这些结构体,数组的长度可以自行设定。 然后,编写函数实现添加学生、查询学生、修改学生、删除学生、显示全部学生成绩等基本操作。…

    C 2023年5月23日
    00
  • c++加法高精度算法的简单实现

    C++高精度算法之加法实现 在进行高精度计算时,我们需要发挥出C++的高精度计算能力,而加法实现就是高精度计算的最基础部分。本文将探讨C++加法高精度算法的简单实现,提供完整代码和演示示例。 1. 问题描述 给定两个非负整数,输出它们的和。 2. 思路分析 我们可以使用数组来实现高精度加法。先设计一个数组用来存储每一位数字,依次相加即可。需要注意的是,进位的…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部