Python入门学习小记:100以内素数/质数之和
今天做到一题利用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以内素数/质数之和相关推荐
- 100以内素数及其之和
问题描述: 找出100以内所有素数,及求之和,并输出. 素数指从大于1,且仅能被1和自己整除的整数. 提示:可以逐一判断100以内每个数是否为素数,然后求和. 思路分析: 根据提示,遍历范围是[2,1 ...
- 用python计算100以内的素数_python-找出100以内的质数
质数:就是只能被1和本身整除的数,1除外,如2,3,5,7,11,13等等 ##求一百以内的质数(1和本身除尽的数) if __name__ == '__main__': list=[] flag=F ...
- python打印100以内的素数_如何用python打印100以内的质数?
在计算机使用的过程中,计算是必不可少的.编程中含有大量的数学计算,可以帮助我们解决实际难操作的问题.有的时候我们会忘记质数是什么,之前小编向大家介绍过在python中判断质数的方法(判断数字是否为质数 ...
- python打印100以内质数_怎么用python打印100以内的质数
怎么用python打印100以内的质数 发布时间:2020-12-10 13:41:15 来源:亿速云 阅读:101 作者:小新 这篇文章将为大家详细讲解有关怎么用python打印100以内的质数,小 ...
- python 一行打印出100以内的质素(素数)
python的列表推导式它是个好东西,不仅在列表里能用,在字典.集合中同样能用. 如果想用一行代码打印出100以内的质数(素数)的话,不妨尝试一下下面这行代码: [print(k) for k in ...
- Linux质数合数的脚本,python输出100以内的质数与合数实例代码
python输出100以内的质数与合数实例代码 具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for ...
- python中求合数_python输出100以内的质数与合数实例代码
具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for ...
- python输出1到100之间的合数_python输出100以内的质数与合数实例代码
具体代码如下所述: __author__ = 'Yue Qingxuan' # -*- coding: utf-8 -*- #求质数 p=[2] for i in range(2,101): for ...
- 100以内的质数(素数)
质数(prime number)又称素数,有无限个.质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数 100以内的质数(素数) function primeNumber(n) ...
最新文章
- Docker - 在CentOS7.5中升级Docker版本
- 浅谈Hive和HBase区别
- HDUOJ----剪花布条
- [云炬创业管理笔记]第一章讨论2
- pycharm mysql安装_PyCharm安装连接MySQL
- 删除重复记录处理(转)
- SLF4J简介与使用(整合log4j)
- [Err] 1064 - You have an error in your SQL syntax check the manual that corresponds to 之Mysql报错
- TCP拥塞控制和TCP流量控制
- 钉钉运营商服务器在哪,钉钉应用服务商
- 微电子学属于计算机专业吗,微电子学
- html 制作魔方源代码,CSS3 3d环境实现立体 魔方效果代码
- 秀才还是野兽(规划还是探索)
- GPU编程自学2 —— CUDA环境配置
- 全国计算机二级office选择题知识点,全国计算机二级考试MS office选择题知识点合集(通用)...
- php全选删除文件,一个简单的PHP全选删除数据
- 金海佳学C++primer9.45/9.46
- iOS-UITextView点击键盘return键的相应
- doPost请求的用法
- 【接口篇 / Wan】(6.4) ❀ 01. 拨号宽带经过防火墙后的速度变化 ❀ FortiGate 防火墙
热门文章
- explain 介绍
- 【刷题笔记】CG第二周
- 第一次课 优秀作业展示
- 从输入URL到页面展示的详细过程
- 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“
- Qt入门01 创建第一个Qt程序
- ajax页面 js文件上传,jQuery插件ajaxfileupload.js实现上传文件
- Unity中关于IphoneX的屏幕适配
- JS生成26个英文字母
- 今年最烂密码出炉,一秒钟就破解!你中枪了没?