湖北省和城乡建设厅官方网站,广州做网站优化公司报价,lnmp wordpress gengxin,做全网vip电影网站违法吗若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我#xff0c;若你是真心学习可以送你书籍#xff0c;指导你学习#xff0c;给予你目标方向的学习路线#xff0c;无套路#xff0c;博客为证。
前言
本专栏内容将会以轻松、简单的方式完成习题的解答#xff0c;用…若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我若你是真心学习可以送你书籍指导你学习给予你目标方向的学习路线无套路博客为证。
前言
本专栏内容将会以轻松、简单的方式完成习题的解答用情景再现的文章风格使读者能够在轻松愉悦的阅读氛围中完成知识的吸收本专栏考虑读者的吸收能力不讲解过多高效的计算方法降低阅读门槛希望各位多多支持~
作者简介
作者名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 递减去寻找那么肯定就会找得到这个值。
小媛唔懂了所以代码是不是应该要写成这样
#includestdio.h
int main()
{int a,b,i;printf(请输入两个数并且使用空格间隔:);scanf(%d%d, a, b);if(ab){ib;}else{ia;}for(; i0; i--){}return 0;
}小C对的你写对咯。首先我们使用 if 语句判断输入的值 a 与 b 哪一个比较小如果 b 数值小的话就存储到循环变量 i 中否则 i 就是存储变量 a 的内容此时通过 i 这个循环变量进行递减就可以逐步的找到最大公约数了。但是你的代码这里有点问题哟。
小媛什么问题
小C就是你是否允许 a 数和 b 数两者的值一样呢
小媛嗯不允许吧。对哟我应该加个判断不允许两个数一致我代码改成这样了你看一下。
#includestdio.h
int main()
{int a,b,i;printf(请输入两个数并且使用空格间隔:);scanf(%d%d, a, b);if(ab){printf(\n 两个数不能相等);return 0;}if(ab){ib;}else{ia;}for(; i0; i--){}return 0;
}小媛结果也测试了。
小C嗯你在用户输入数字后判断两个数值是否相等如果相等就使用 return 进行程序跳出不错是写对了。现在开始添加判断最大公约数的代码吧现在会了吧
小媛当然会了循环中添加这个代码就可以了。
for(; i0; i--){if(a%i0 b%i0){printf(最大公约数是%d\n, i);break;}
}小C不错代码是正确的直接使用 if 语句判断 a 数和 b 数 两个数除循环变量 i 如果都是除的断那么这个循环变量 i 此时就是约束如果是第一次找到这个 i 除的断那么就是最大公约数此时在 if 语句后添加一个 break 直接跳出那么就保证了此时找到数是最大公约数了。
小媛那是厉害吧完整代码在下面。
#includestdio.h
int main()
{int a,b,i;printf(请输入两个数并且使用空格间隔:);scanf(%d%d, a, b);if(ab){printf(\n 两个数不能相等);return 0;}if(ab){ib;}else{ia;}for(; i0; i--){if(a%i0 b%i0){printf(最大公约数是%d\n, i);break;}}return 0;
}小C那我们举一反三吧最小公约数怎么求呢
小媛那就反过来从 1 开始往上加但是不能超过 a 数与 b 数中最小的那个数此时找到了就输出并且直接使用 break 进行跳出那么肯定就是最小公约数了或者还有一种少改动的方法就是不用 break新建一个变量反正每次有约数就覆盖掉之前的元素这样处理到最后一个肯定就是最小约数了但是还有一个条件不能等于1代码写出来了。
#includestdio.h
int main()
{int a,b,i,min0;printf(请输入两个数并且使用空格间隔:);scanf(%d%d, a, b);if(ab){printf(\n 两个数不能相等);return 0;}if(ab){ib;}else{ia;}for(; i0; i--){if(a%i0 b%i0){if(i!1){mini;}}}printf(最小公约数是%d\n, min);return 0;
}小C行吧行吧虽然效率不行但是你的脑子可以。
小媛哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈。
本专栏已参加 CSDN 蓄力计划感谢读者支持。