今天做到一题利用for循环求100以内素数之和的题目,发现自己在Python的语法上遇到了问题:这个else是谁的?在此记录以防下次又做错啦。

题目很简单:
100以内素数之和
求100以内所有素数之和并输出。 ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

素数指从大于1,且仅能被1和自己整除的整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬
可以逐一判断100以内每个数是否为素数,然后求和。

一开始我的程序是这样的:

    sum = 0for i in range(2,100):#寻找的范围为2-99for j in range(2,i):if (i%j == 0):breakelse:sum += iprint(sum)

然而输出时sum却等于66705!
这明显不对呀!
为了初步排查我找到的素数是否有问题,修改了一下程序

sum = 0
for i in range(2,100):#寻找的范围为2-99for j in range(2,i):if (i%j == 0):breakelse:print(i)#sum += i
#print(sum)

果然输出的素数是有问题的。查看结果发现找到的素数出现了多次输出甚至输出非素数的情况,加起来当然比正确答案大的多啦。

可是为什么会出现这样的错误呢?

复习一下:
break语句:用于跳出最内层的for或while循环,即一个break语句只有能力跳出当前层次的一个循环。跳出这个循环后从这个循环后面的代码继续执行。
if-else二分支:如果满足if后的条件,就执行冒号后面的语句;否则执行else冒号后面的语句。二分支结构用于区分对if后条件的两种可能,满足条件即True,不满足条件即False,以此分别形成执行路径。

所以,在上面这个程序中,双层for嵌套后利用了一个if-else二分支。如果满足条件:i对j取余数为零(i<j,排除了i=j的情况),说明i除了1和它本身之外还能被其他整数整除,那么这个i并不是一个素数,利用break跳出循环继续寻找素数;如果不满足这个条件,就说明找到了一个素数i,执行else冒号后面的语句打印这个素数,并返回对j的for循环。然而对j的循环是从2循环到i的前一个数,如果i是一个素数,不论j是多少都除不尽。因此,每遍历一个j→除不尽→打印i。除不尽几次就打印了几次i,使得多次输出该素数造成了输出不准确。甚至对于某个非素数i,如果与目前遍历得到的j除不尽,也会一直打印i直到i与j能够除得尽跳出对j的循环。

再复习一下:
for in-else语句:遍历在in后面的遍历结构,当for循环正常遍历了所有内容或由于条件不成立而结束循环,且没有因为break或return而跳出循环时,才执行else后面的语句。

这里的“else”是for的,还是if的?显然,应该是for的。只有遍历全部j后依然除不尽的才能够认为i为素数并输出。写程序时太粗心写错了else的位置;对于Python语法的不熟练没能透彻的结合题目的意思。意识到问题所在,修改程序

sum = 0
for i in range(2,100):for j in range(2,i):if (i%j == 0):breakelse:sum += i
print(sum)

输出sum=1060,是正确答案!

Python入门学习小记:100以内素数/质数之和相关推荐

  1. 100以内素数及其之和

    问题描述: 找出100以内所有素数,及求之和,并输出. 素数指从大于1,且仅能被1和自己整除的整数. 提示:可以逐一判断100以内每个数是否为素数,然后求和. 思路分析: 根据提示,遍历范围是[2,1 ...

  2. 用python计算100以内的素数_python-找出100以内的质数

    质数:就是只能被1和本身整除的数,1除外,如2,3,5,7,11,13等等 ##求一百以内的质数(1和本身除尽的数) if __name__ == '__main__': list=[] flag=F ...

  3. python打印100以内的素数_如何用python打印100以内的质数?

    在计算机使用的过程中,计算是必不可少的.编程中含有大量的数学计算,可以帮助我们解决实际难操作的问题.有的时候我们会忘记质数是什么,之前小编向大家介绍过在python中判断质数的方法(判断数字是否为质数 ...

  4. python打印100以内质数_怎么用python打印100以内的质数

    怎么用python打印100以内的质数 发布时间:2020-12-10 13:41:15 来源:亿速云 阅读:101 作者:小新 这篇文章将为大家详细讲解有关怎么用python打印100以内的质数,小 ...

  5. python 一行打印出100以内的质素(素数)

    python的列表推导式它是个好东西,不仅在列表里能用,在字典.集合中同样能用. 如果想用一行代码打印出100以内的质数(素数)的话,不妨尝试一下下面这行代码: [print(k) for k in ...

  6. Linux质数合数的脚本,python输出100以内的质数与合数实例代码

    python输出100以内的质数与合数实例代码 具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for ...

  7. python中求合数_python输出100以内的质数与合数实例代码

    具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for ...

  8. python输出1到100之间的合数_python输出100以内的质数与合数实例代码

    具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for ...

  9. 100以内的质数(素数)

    质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数 100以内的质数(素数) function primeNumber(n) ...

最新文章

  1. Docker - 在CentOS7.5中升级Docker版本
  2. 浅谈Hive和HBase区别
  3. HDUOJ----剪花布条
  4. [云炬创业管理笔记]第一章讨论2
  5. pycharm mysql安装_PyCharm安装连接MySQL
  6. 删除重复记录处理(转)
  7. SLF4J简介与使用(整合log4j)
  8. [Err] 1064 - You have an error in your SQL syntax check the manual that corresponds to 之Mysql报错
  9. TCP拥塞控制和TCP流量控制
  10. 钉钉运营商服务器在哪,钉钉应用服务商
  11. 微电子学属于计算机专业吗,微电子学
  12. html 制作魔方源代码,CSS3 3d环境实现立体 魔方效果代码
  13. 秀才还是野兽(规划还是探索)
  14. GPU编程自学2 —— CUDA环境配置
  15. 全国计算机二级office选择题知识点,全国计算机二级考试MS office选择题知识点合集(通用)...
  16. php全选删除文件,一个简单的PHP全选删除数据
  17. 金海佳学C++primer9.45/9.46
  18. iOS-UITextView点击键盘return键的相应
  19. doPost请求的用法
  20. 【接口篇 / Wan】(6.4) ❀ 01. 拨号宽带经过防火墙后的速度变化 ❀ FortiGate 防火墙

热门文章

  1. explain 介绍
  2. 【刷题笔记】CG第二周
  3. 第一次课 优秀作业展示
  4. 从输入URL到页面展示的详细过程
  5. 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“
  6. Qt入门01 创建第一个Qt程序
  7. ajax页面 js文件上传,jQuery插件ajaxfileupload.js实现上传文件
  8. Unity中关于IphoneX的屏幕适配
  9. JS生成26个英文字母
  10. 今年最烂密码出炉,一秒钟就破解!你中枪了没?