鱼C论坛

 找回密码
 立即注册
查看: 2507|回复: 4

求助Python输出1-100的质数

[复制链接]
发表于 2019-10-28 10:02:17 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
for i in range(2,100):
  for j in range(2,j) :
       if i%j!=0:
            print(i)
输出的结果是一堆99和98
不知道哪里错了,求大神解释一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-28 10:13:42 | 显示全部楼层
本帖最后由 Hoiste 于 2019-10-28 10:14 编辑

问题大了,你这第二个for循环把i打成j了吧,不过你能运行那应该只是这里打错了。
不过如果你第二个循环和分支要表达“2到i之间没有其他数可以把i整除“这个思想出现了问题,举个例子:
i为8不是质数,但是3,5,6,7不能把8整除,但是满足i % j != 0这个条件,所以会打印4个8出来。
整体来说你的问题在于对分支循环结构了解还不够,你要让i里面所有2到i的数都不能整除i的情况下打印i才会得到你想要的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-28 10:31:59 | 显示全部楼层
本帖最后由 jackz007 于 2019-10-28 10:43 编辑

for i in range(2100):
  for j in range(2,j) :

      这两句的问题是中文逗号,后一句还把变量写错了,应该写成下面这样才对:
  for j in range(2 , i) :

      所有的缩进都不规范,这都是问题。

      还有,用枚举法判定质数,得在验证完所有的因子后才能下结论,就是说,要确定 j 是不是质数,应该在 2 ~ j - 1 的范围内选取除数,只有能确定 j 不能被所有的除数整除的情况下,才能下最后的结论。

      所以,楼主的代码应该这么写:
  1. import math
  2. for i in range(2 , 100):
  3.     f = True                                                      # 先假定 i 是质数
  4.     for j in range(2 , int(math . sqrt(i)) + 1) :
  5.         if not (i % j) :                                          # 如果 i 能被任何一个因子整除
  6.             f = False                                             # 那么,i 肯定就不是质数
  7.             break                                                 # 既然不是质数,也就没有必要继续循环了
  8.     if f:                                                         # 判断应该在试验完所有的除数以后才能最终作出
  9.         print(i)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-28 12:13:21 | 显示全部楼层
本帖最后由 foxiangzun 于 2019-10-28 12:16 编辑
  1. for i in range(2, 100) :
  2.         flag = 0
  3.         for j in range(2, i) :
  4.                 if i % j == 0 :
  5.                         flag += 1
  6.         if flag < 1 :
  7.                 print(i)
复制代码


这里说明一下:
1、质数的判定标准,是其因数首先是整数,同时因数的个数只有两个(1 与其本身)
2、在你的代码中,没有对因数的个数进行判断,所以无法正确的找到质数
3、第二行代码有误

上面我写的这段代码中,因数就是 j,从 2 开始,到 i 之前结束,所以因数小于 1,这样的才算是质数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-12 20:39:55 | 显示全部楼层
  1. for  i in range(1,100,2):
  2.         print(i)
复制代码



是奇数么- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 10:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表