在1--1000之内,找出所有的质数(python3代码)

质数,是个古老的话题,每一个编程的都会去搞下,我的小学生昨天发现我网上弄下来的代码不对,于是,我只好再认真审视,并纠正它:将"int(sqrt(x))" 改成了"1+int(sqrt(x))",并补充与注释了些,分享给初学者:
#题目:在1--1000之内,找出所有的质数 
#         其他的代码700多个,在我的仓库:
# url_1:  https://github.com/xiang-daode/Python3_codes
# url_2:  https://gitee.com/xiang-daode/Python3_codes

#!/usr/bin/python
# -*- coding: cp936 -*-
from math import sqrt

#单行写法: 
#print(" ".join("%s"% x for x in range(2,1000)if not [y for y in range(2,1+int(sqrt(x)))if not x%y]))


#解释1:是合数的,输出各因数:
for x in range(2,100):
    print(x,":")
    for y in range(2,x-1): #range(2,1+int(sqrt(x)))
         if x%y==0:  # not x%y: 如同: x%y==0 ,因为非0是True, 0即False
             print(y,end=',')
    print('<<<===============')

#解释2:先不管拼接为字符串之事,生成个列表a1,  print(a1) #输出是列表:
a1=[x for x in range(2,1000)if not [y for y in range(2,1+int(sqrt(x)))if not x%y]]
#     {  2,3,4,  ...,   999}若  非  {            合数(非质数)                     }


#解释3:将所有数字元素转为字符串,插入空格拼接成长字符串,输出是字符串:
print(" ".join("%s"%  m for m in  a1))
    

'''解释4:传统的多行写法:
for x in range(2,1000):
    f=1
    for y in range(2,1+int(sqrt(x))):
        if  x%y ==0:
            f=0
    if f==1:
        print(x,end=',')
''' 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值