【C语言】辗转相除法

2023-05-16

当我们初学C语言时,遇到一个需要我们求出这两个数字的最大公约数的题目,这时我们应该如何去设计代码来完成目的呢?

公约数是什么?这个首先我们需要清楚。它是指能够同时整除几个整数的数,在这个题目里,便是能同时整除两个数字的数。而最大公约数则是指,在上述的基础上,加上一个最大,即在公约数里找到最大的数。

那么我们先不要去想辗转相除法,而是去思考如何设计代码来完成目的。
假设有两个数字:24,18 我们需要求出他们之间的最大公约数。

这个最大公约数是不是需要满足1、能同时整除两个数字 2、在公约数里它是最大的

我们可以从上往下去寻找公约数,一旦找到,那肯定是最大的公约数。

首先设计一个for循环

for(int i = 18; i > 0 ; i - - )
{
if( (24 % i == 0 ) && (18 % i == 0 ) )
{
printf("%d", i ) ;
}
}
if ( i ==0 )
{
printf(“找不到”);
}
-------------------------------------------------分割线
就这样一个简单的代码,就能够实现我们找到最大公约数的功能

为什么我会设置i 为 18? 两个数字的公约数肯定是比这两个数字都要小的,那么当然是从这两个数字中最小的数字开始寻找 公约数。

上述的方法虽然可以解决问题,但是如果题目给我们的数字过大,那么这种代码所要花费的时间是很多的,于是,便有了辗转相除法。

代码:
int x = 24 , y = 18 , z= 0 ; // (初始化)
while ( z = x % y )
{
x = y;
y = z;
}
printf("%d" , y );

首先,x 和 y 的大小这个我们是不需要的管的,无论是 x = 18 ,y = 24还是 x = 24 , y = 18 结果都是一样的。
比如:x = 18 , y = 24 这时候进入了 while循环 ,判断条件里 z = x% y , 这时候 18%24是不是还是等于18? 所以z被赋值为18 。 进入了循环体,x被赋值为了y,即24 y被赋值为了z,即18。
因此,我们没有必要去判断X和Y谁大谁小

当循环进行到 x = 18, y = 6 时,这个时候判断条件里,z == 0 ,因为 18 % 6 ==0,所以循环终止。
那么哪个才是最大公约数呢?就是y ,即6 我们只需要记住这个循环里,取模得到0后,除数是最大公约数就可以了,至于这算法的原理?呃。。。。。。如果你的数学很好的话,可以尝试去理解

我们只需要记住了这个算法思想,那么以后写出来的代码可以不需要按照这种格式写,只要思想是对的,那么过程怎么样都可以。

例如:int x = 24 , y = 18 , z = 0;
while(1)
{
z = x% y;
if ( z == 0 )
{
printf("%d",y);
break;
}
x = y;
y = z;
}

在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C语言】辗转相除法 的相关文章

随机推荐

  • Vue.js 3 ssr 中报错Hydration node mismatch: - Client vnode: div - Server rendered DOM:已解决

    使用nuxt框架 43 element 43 vue3 出现该问题 解决方案 该问题其实是由于在开发阶段本地服务器的代码与浏览器的代码不一致导致的问题 xff0c 可以执行一次build命令 xff0c 可以解决该问题 xff0c 实际到部
  • egg js 搭建项目,教程

    Egg js 搭建工程 Egg js 为企业级框架和应用而生 xff0c 我们希望由 Egg js 孕育出更多上层框架 xff0c 帮助开发团队和开发人员降低开发和维护成本 官网 使用脚手架搭建应用程序 快速初始化项目 npm init e
  • k8s1.26安装(kubeadm containerd)

    环境背景 xff1a k8s 1 k8s 2 k8s3三台主机 1台master节点 xff0c 2台node节点 准备环境 修改主机名 3台分别修改主机名 hostnamectl set hostname k8s 1 hostnamect
  • 自动化运维必备之Shell脚本的循环语句,超详细讲解!

    Shell编程之循环语句 自动化运维必备之Shell脚本的循环语句 xff0c 超详细讲解 xff01 Shell编程之循环语句前言1 for循环3 while循环和until循环4 嵌套循环5 循环语句中的break exit和conti
  • 洛谷P2078 朋友

    题目传送门 xff1a 洛谷P2078 朋友 题目详情 xff1a 小明在 A 公司工作 xff0c 小红在 B 公司工作 这两个公司的员工有一个特点 xff1a 一个公司的员工都是同性 A 公司有 N 名员工 xff0c 其中有 P 对朋
  • Ubuntu-18.04版本网络配置,连接网络的方法

    运行命令 sudo apt get update 时出错 xff1a 好久没有Ubuntu xff0c 本来想安装一个工具 xff0c 结果一顿操作后 xff0c 发现网没连上 后来查了资料 xff0c 才解决 1 查看网络状态 xff0c
  • Windows系统安装配置MinGw64位详细教程

    MinGW 全称为 xff0c Minimalist GNU for Windows xff0c 它实际上是将经典的开源 C语言编译器 GCC 移植到了 Windows 平台下 xff0c 并且包含了 Win32API xff0c 因此可以
  • 如何学习正则表达式

    正则基础知识点 1 元字符 万物皆有缘 xff0c 正则也是如此 xff0c 元字符是构造正则表达式的一种基本元素 我们先来记几个常用的元字符 xff1a 元字符说明 匹配除换行符以外的人一字符 w匹配字母或数字或下划线或汉字 s匹配任意的
  • css布局入门指南,掌握页面布局基础

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • 运用CSS视觉差和精灵图优化网页性能案例

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • [CSP2019] 划分

    link 32pts 用 f i j f i j f i j
  • CSS基本语法入门,掌握几种常见的选择器

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • 深入理解css复杂选择器的应用:解密多层标签嵌套的最佳案例

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • Android Studio:Intent与组件通信实现页面跳转功能

    x1f4cc Android Studio 专栏正在持续更新中 xff0c 案例的原理图解析 各种模块分析 x1f496 这里都有哦 xff0c 同时也欢迎大家订阅专栏 xff0c 获取更多详细信息哦 个人主页 xff1a 零小唬的博客主页
  • Linux 文件系统调用 文件操作

    Linux 文件系统调用 文件操作 Linux 文件系统调用 文件操作 xff1a 12将a txt 内容拷贝到 b txt xff1a xff08 cp命令实现 mycp命令 xff09 找文件int fd 61 open 43 fork
  • 【C语言】辗转相除法

    当我们初学C语言时 xff0c 遇到一个需要我们求出这两个数字的最大公约数的题目 xff0c 这时我们应该如何去设计代码来完成目的呢 xff1f 公约数是什么 xff1f 这个首先我们需要清楚 它是指能够同时整除几个整数的数 xff0c 在
  • 【开篇】STM32F103C8T6 含义、命名规则、GPIO原理以及初始化(参考男神江科协,学习交流用)

    目录 目录 一 xff0c STM系列命名规则 二 引脚功能 三 电路以及寄存器 一 xff0c STM系列命名规则 1 产品系列 xff1a STM32代表意法半导体的Cortex Mx系列内核 xff08 ARM xff09 32位的M
  • [NOIO #2] 游戏

    首先有一个结论 二项式反演 用 f n f n f n 表示钦定选择了 n
  • Python的命名规范

    文章目录 一 python变量名命名的硬性规则1 1 变量名大小写敏感1 2 python的变量名字中可以包含英文 下划线 数字 xff0c 但是不能以数字开头 二 不同风格命名的变量代表不同的类型2 1命名法2 2 模块 module 命
  • 计算机组成原理——头歌平台 计算机数据表示实验

    目录 第一关 xff1a 汉字国标码转区位码实验 第二关 xff1a 汉字机内码获取实验 第三关 xff1a 偶校验编码设计 第四关 xff1a 偶校验解码电路设计 第一关 xff1a 汉字国标码转区位码实验 完成结果如下图 xff1a 完