【小白必懂】C语言最大、最小公约数题解

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。

前言

本专栏内容将会以轻松、简单的方式完成习题的解答,用情景再现的文章风格使读者能够在轻松愉悦的阅读氛围中完成知识的吸收,本专栏考虑读者的吸收能力,不讲解过多高效的计算方法,降低阅读门槛,希望各位多多支持~

作者简介

作者名:1_bit

简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。

博客地址:https://i1bit.blog.csdn.net


情景再现(以下内容不考虑数字 1 为约数)

👸小媛:小C 今天我又遇见一个我不懂的知识点了。 😰

🐰小C:什么知识点?

👸小媛:是数学相关的。 😭

🐰小C:正常,很多知识点不用就会忘记的,没什么好担心的。说吧,是什么知识点呢?

👸小媛:就是公约数,公约数我忘记了是什么知识了。 😫

🐰小C:哈哈哈,没事,其实我也忘记什么是公约数了,刚刚就在你提问的瞬间我搜索了一下然后就记起来了。

👸小媛:你是在安慰我。

🐰小C:哈哈哈,真的,忘记很正常,你也别沮丧了,我先告诉你什么是公约数吧?

👸小媛:跪谢大佬指教! 😐

🐰小C:我们先看看什么是约数吧。如果有一个自然数例如 15,这个数字 15 能够被 5 整除,这个时候我们就可以称 5 是 15 的约数,15 则是 5 的倍数,这个知识点懂了吧?

👸小媛:哈哈哈,懂了,原来那么简单。

🐰小C:那我们再看看公约数是什么。现在我们假设有两个数,一个是 15 一个是 30,他们两者都可以被同样的数字整除,例如 5、10、15,那么 5、10、15 这几个数就是 15 与 30 的 公有 约数,所以我们就称为公约数。

👸小媛:唔,我懂了,我现在是要写一道题目,需要用户输入两个数字,然后判断这两个数的最大公约数和最小公约数。 😂

🐰小C:嗯,挺简单的。你看 5、10、15 是 15 月 30 的公约数,那么最大的公约数就是 15,最小的公约数就是 5了,简单吧。

👸小媛:哈哈哈,简单是简单,那程序要怎么写呢?

🐰小C:首先肯定是要用户输入两个数吧?

👸小媛:是的。

🐰小C:那你就写出来吧,如何接收用户输入并且存储两个变量的代码。

👸小媛:嗯,写好了,在下面。

int a,b;
printf("请输入两个数,并且使用空格间隔:");
scanf("%d%d", &a, &b);

👸小媛:我创建了两个变量,一个是 a 一个是 b,分别存储用户输入的内容,但是接下来我不懂怎么做了。

🐰小C:接下来也很简单,但是我得先告诉你一个概念。例如有两个数,一个是 15 一个是 30,他们之间的公约数有哪些?

👸小媛:有 5 和 15。

🐰小C:最大公约数此时是 15,你发现了吗?他们之间最大的公约数,是不能超过 15 与 30 之间最小的那个数的。

👸小媛:真的吗?

🐰小C:那我给你举个例子吧,现在有两个数 20 和 40,他们之间最大公约数是几呢?

👸小媛:是 20 。

🐰小C:那 50 跟 100 呢?他们之间的最大公约数是几呢?

👸小媛:最大公约数是 50,好像是真的耶,他们之间的最大公约数是不能超过求最大公约数的两个数中最小的那一个。

🐰小C:因为数值本身除本身就是 1,若你超过了那不就是小数了吗?

👸小媛:哈哈哈,是这个理。 😋

🐰小C:所以接下来我们就很简单的做了。编写一个循环,这个循环的循环变量等于求最大公约数中最小的一个,此时循环变量只要每次减 1,循环的寻找最大公约数就可以了。

👸小媛:为什么要每次都减 1 呢?

🐰小C:就像 15 和 25 的最大公约数 5 一样,必定是小于15 的,此时我们只需要从 15 递减去寻找,那么肯定就会找得到这个值。

👸小媛:唔,懂了,所以代码是不是应该要写成这样?

#include<stdio.h>
int main()
{int a,b,i;printf("请输入两个数,并且使用空格间隔:");scanf("%d%d", &a, &b);if(a>b){i=b;}else{i=a;}for(; i>0; i--){}return 0;
}

🐰小C:对的,你写对咯。首先我们使用 if 语句,判断输入的值 a 与 b 哪一个比较小,如果 b 数值小的话就存储到循环变量 i 中,否则 i 就是存储变量 a 的内容,此时通过 i 这个循环变量进行递减,就可以逐步的找到最大公约数了。但是你的代码这里有点问题哟。

👸小媛:什么问题? 😱

🐰小C:就是你是否允许 a 数和 b 数两者的值一样呢?

👸小媛:嗯,不允许吧。对哟,我应该加个判断,不允许两个数一致,我代码改成这样了,你看一下。

#include<stdio.h>
int main()
{int a,b,i;printf("请输入两个数,并且使用空格间隔:");scanf("%d%d", &a, &b);if(a==b){printf("\n 两个数不能相等");return 0;}if(a>b){i=b;}else{i=a;}for(; i>0; i--){}return 0;
}

👸小媛:结果也测试了。

🐰小C:嗯,你在用户输入数字后,判断两个数值是否相等,如果相等就使用 return 进行程序跳出,不错,是写对了。现在开始添加判断最大公约数的代码吧,现在会了吧?

👸小媛:当然会了,循环中添加这个代码就可以了。

for(; i>0; i--){if(a%i==0 && b%i==0){printf("最大公约数是:%d\n", i);break;}
}

🐰小C:不错,代码是正确的,直接使用 if 语句判断 a 数和 b 数 两个数除循环变量 i ,如果都是除的断那么这个循环变量 i 此时就是约束,如果是第一次找到这个 i 除的断那么就是最大公约数,此时在 if 语句后添加一个 break 直接跳出,那么就保证了此时找到数是最大公约数了。

👸小媛:那是,厉害吧,完整代码在下面。

#include<stdio.h>
int main()
{int a,b,i;printf("请输入两个数,并且使用空格间隔:");scanf("%d%d", &a, &b);if(a==b){printf("\n 两个数不能相等");return 0;}if(a>b){i=b;}else{i=a;}for(; i>0; i--){if(a%i==0 && b%i==0){printf("最大公约数是:%d\n", i);break;}}return 0;
}

🐰小C:那我们举一反三吧,最小公约数怎么求呢?

👸小媛:那就反过来,从 1 开始往上加,但是不能超过 a 数与 b 数中最小的那个数,此时找到了就输出,并且直接使用 break 进行跳出,那么肯定就是最小公约数了;或者还有一种少改动的方法,就是不用 break,新建一个变量,反正每次有约数就覆盖掉之前的元素,这样处理到最后一个肯定就是最小约数了,但是还有一个条件不能等于1,代码写出来了。 😎

#include<stdio.h>
int main()
{int a,b,i,min=0;printf("请输入两个数,并且使用空格间隔:");scanf("%d%d", &a, &b);if(a==b){printf("\n 两个数不能相等");return 0;}if(a>b){i=b;}else{i=a;}for(; i>0; i--){if(a%i==0 && b%i==0){if(i!=1){min=i;}}}printf("最小公约数是:%d\n", min);return 0;
}

🐰小C:行吧行吧,虽然效率不行但是你的脑子可以。

👸小媛:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。 👍

本专栏已参加 CSDN 蓄力计划,感谢读者支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何为微服务选择正确的消息队列

微服务及消息队列简史自从 Peter Rodgers 博士 2005 年在 Web Services Edge 会议上首次提出 Micro-Web-Services 一词后&#xff0c;IT 行业慢慢地从单体架构转向了微服务。2009 年&#xff0c;Netflix 决定把其单体架构拆分为微服务。2010 年&#xff0c;Best Buy 开始把它们…

Android之解决PC浏览器访问手机服务端取assets目录下的文件页面显示不出来问题

1 问题 我在手机里面写了Java socket服务,然后把前端的图片和css和js的文件放到了安卓项目的 assets目录,然后浏览器访问服务,我会把 assets目录下的文件读出来,然后用DataOutputStream流写入浏览器,但是发现页面显示不出来 2 分析原因 我的代码如下 public void sendHt…

【小白必懂】C语言回文数判断

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 情景再现 &#x1f478;小媛&#xff1a;小C&#xff0c;今天可以教我…

Android图片上倒计时,Android自定义照相机倒计时拍照

自定义拍照会用到SurfaceView控件显示照片的预览区域&#xff0c;以下是布局文件&#xff1a;两个TextView是用来显示提示信息和倒计时的秒数的xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height&qu…

【经典回放】多种语言系列数据结构算法:树(C#、JavaScript、VB6版)

目 录 一、树的C#语言实现以及显示 二、树的JavaScript语言实现以及显示 三、树的VB6语言实现以及显示 一、树的C#语言实现以及显示 1

『技术群里聊些啥』查看 dotnet 源码,用它!用它!用它!

前言有网友在交流群中询问&#xff0c;怎么找到 System.Linq 源码的库&#xff1a;其实&#xff0c;我一直使用http://source.dot.net查看 dotnet 源码&#xff0c;这可是David Fowler&#xff08;微软 .NET 架构师&#xff09;也推荐的&#xff1a;功能演示那它到底有哪些功能…

Android之解决PC浏览器上传表单文件到手机服务器read数据错误导致有时候下载到手机的文件打开文字错乱问题

1 、问题 手机客户端app通过java socket写了一个服务器,然后PC端通过浏览器访问服务端显示上传页面(这些资源都在手机端),然后其中有一个功能是PC端上传文件到手机服务器,然后把这个文件下载到手机本地,但是我有时候PC上传的文件打文字会错乱。 2、http的表单文件上传文…

javadoc注释规范

javadoc注释规范 javadoc做注释 一. Java 文档 // 注释一行 /* ...... */ 注释若干行 /** ...... */ 注释若干行&#xff0c;并写入 javadoc 文档 通常这种注释的多行写法如下&#xff1a; /** * ......... * ......... */ javadoc -d 文档存放目录 -author -version 源文件名.…

(7)3分钟搞定 C# 逻辑运算

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

【经典回放】多种语言系列数据结构算法:二叉树(C#版)

实验任务描述 1 用C#语言完成二叉树的类、并构造出一个二叉树; 2 用递归方法完成二叉树的遍历; 3 泛型的二叉树遍历之一、用队列给出遍历结果 4 泛型的二叉树遍历之二、委托方式给出二叉树遍历结果 1 二叉树类的设计 同C语言一样,要构建一个二叉树,要用到类似struct的东西…

ThinkPHP讲解(十二)——文本编辑器和ajax传址

一、文本编辑器 1.首先&#xff0c;在网上下载ueditor文件 2.在要添加文本编辑器的页面中引用ueditor文件中的js文件 <script type"text/javascript" charset"utf-8" src"../ueditor/utf8-php/ueditor.config.js"></script> <scr…

(8)小白又如何?3分钟搞定一个 C# 知识点

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Android之解决PC端上传http表单格式文件手机解析文件名乱码问题和PC浏览器下载文件的文件名显示乱码问题

1 问题 问题1、 手机写socket作为服务器,PC浏览器上传http表单格式文件,然后手机端解析携带中文的文件名我解析是乱码。 问题2、 手机写了socket作为服务器,PC浏览器下载文件,但是浏览器里面的文件名有中文的时候会有乱码。 2 分析 问题1分析 User-Agent: PostmanRun…

华为鸿蒙vogtloop30pro价格,华为Mate30系列基本确认:首发麒麟985+鸿蒙系统,价格感人!...

原标题&#xff1a;华为Mate30系列基本确认&#xff1a;首发麒麟985鸿蒙系统&#xff0c;价格感人&#xff01;转眼间即将步入6月份&#xff0c;近期关于各大厂商下半年的新机消息也是多了起来&#xff0c;就拿华为下半年的高端旗舰华为Mate30系列来说&#xff0c;在各方媒体的…

[不一样的依赖注入]容器与服务周期的结合

微信公众号&#xff1a;趣编程ACE关注可了解更多的.Net日常开发技巧&#xff0c;如需源码请后台留言 源码;如果觉得本公众号对您有帮助&#xff0c;欢迎关注前文回顾[不一样的依赖注入]通过递归实现容器里依赖注入不一样的依赖注入 创建周期的加入首先创建一个依赖提供类&#…

(11)python里面while到底有多少知识点

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

【经典回放】多种语言系列数据结构算法:二叉树(JavaScript版)

1 二叉树类的设计以及二叉树遍历 要完成二叉树的类设计&#xff0c;最好把链表下的Node.js复制过来&#xff0c;相比链表的结点&#xff0c;二叉树仅仅是多了一个结点指针而已。略加修改后&#xff0c;就是&#xff1a; function TNODE(DATA) { this.DataDATA; this.lChildnu…

Fiddler之解决https链接返回数据显示乱码问题

1 、问题 我网页访问淘宝&#xff0c;然后F12查看关键链接&#xff0c;返回的数据里面有json各式的数据&#xff0c;然后我通过关键字在Fiddler里面找到链接&#xff0c;然后查看返回的内容是乱码。 2 、解决办法 然后这样设置&#xff0c;再去查看SyntaxView或者Raw都可以看到…

android上传图片被旋转,input上传照片旋转解决办法

需求很简单&#xff1a;h5拍照上传照片&#xff0c;然后显示出来问题在&#xff1a;上传之后的图片在PC&#xff0c;IOS端均能正常显示&#xff0c;Android端显示的则是被旋转90度的。直接上代码下面这个方法传入file对象&#xff0c;然后会去除掉照片中的exIf信息&#xff0c;…

(12)python 的列表我从没想过会那么好用

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…