• 在学习中遇到的第一难点


    ---恢复内容开始---

                要说我在一周中遇到的困扰还是很多的,每一次都花费大量时间来解决这些问题,其中时间花费最多的就得数分解质因数了。

                第一次接触这种代码比较多,而且流程控制也多的题,我照着视频讲解照搬下来的代码也出错,而且花了三四个小时一直没找到错在哪儿,当时脑袋感觉是越来越乱,决定暂放一边,回家慢慢研究,结果直到晚上十二点也没搞定。第二天到学校又重新写了一次,还是有错误,但是我知道了是那部分出了错,很快的就解决了。

               这是提示用户输入的部分,这段代码要实现的是如果用户输入的数字不是合数或者不大于1,就提示用户输入不正确,重新输入。这段代码使用了while循环来实现,其中还有判断这个数是不是质数的if判断语句,当时对判断是不是质数的算法没搞清楚,加上代码比较复杂,弄了好久才理解这段代码。 

    下面这段代码才是真正让我困扰的,花费了巨量的时间。这里面while循环里面有for循环,for循环里有if判断,当时为了推算它的运行步骤,没少去翻笔记来加深理解每一次运行的规则。而且当时写的时候很混乱,每一个作用域都有点看不懂,理解不了。特别是要让每个质因数输出到控制台,还得在中间加入乘号。直到这个代码编写完成,我都不知道我改了多少次。

             再推一下这段代码:        首先定义一个factors集合来保存得到的最小质因数;这个int类型的变量n就是用户输入的合数;为了方便理解,可以自己给 n 赋一个值 18;while循环的条件为 n 不等于 1,所以while循环运行,for循环中,变量 i 是每次运行都会自动加 1 的,最小的质数就是2,所以 i f第一次判断结果一定是真,然后将 i 的值添加到factors集合中,然后给 n 赋值为 n/i=9 ,然后break结束循环;由于变量 n 是在while循环外定义的,所以 n 的值就变为了 9 ,然后进行第二次for循环;这次 if 判断的条件n%i==0(9%2==0)不成立,然后运行  i++,i 的值自增1变为3,;这次判断条件成立了,n 的值就变为了9/3=3,然后将 i 的值 3添加到集合中,然后结束for循环,开始下一次while循环,while循环的条件 n 不等于 1 还是成立,for循环开始,直到 i =3时,if判断结果为真,再将 i 的值3 添加到集合中,n 的值就变为了3/3=1,break结束for循环,这次white循环的条件为假了,不成立了,所以也就不再运行了,也就得到了18,的全部最小质因数。最后使用for循环依次输出集合factors中的

    值,整个程序就结束了。

  • 相关阅读:
    【先定一个小目标】在Windows下的安装Elasticsearch
    【先定一个小目标】Windows下Redis的安装使用
    【.net core 跨平台】第一步 在Ubuntu16.04 配置.net core环境
    Caf.CMS是一个免费的、 开源,功能齐全的CMS
    使用MicroService4Net 快速创建一个简单的微服务
    记录-div绝对定位针对手机浏览器的区别
    OS X 下不通过Homebrew安装ASP.NET 5开发环境
    结合谷歌地图多边形(polygon)与Sql Server 2008的空间数据类型计算某个点是否在多边形内的注意事项
    插入排序
    修复lvm的逻辑卷
  • 原文地址:https://www.cnblogs.com/zmdweb/p/7402251.html
Copyright © 2020-2023  润新知