标题:求质数游戏,遇到小BUG, 求教。。。莫名其妙,多出“**”?
只看楼主
Python_Toni
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-9-18
结帖率:100%
已结贴  问题点数:20 回复次数:3 
求质数游戏,遇到小BUG, 求教。。。莫名其妙,多出“**”?
for num in range(10,20):  # 迭代 10 到 20 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print ('%d 等于 %d * %d' % (num,i,j))  #?????
         break            # 跳出当前循环, break语句 ???
      else:
         print('*'*i)
   else:   # for...else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
    print(num, '是一个质数')  # 循环的 else 部分

###在输出的结果中, 在“14 等于2*7”之后应该是“15等于3*5”, 应该执行BREAK中断内嵌for循环,不执行else: print('*'*i).
###怎么多出个“**”???


输出结果:
10 等于 2 * 5
**
***
****
*****
******
*******
********
*********
**********
11 是一个质数
12 等于 2 * 6
**
***
****
*****
******
*******
********
*********
**********
***********
************
13 是一个质数
14 等于 2 * 7
**
15 等于 3 * 5
16 等于 2 * 8
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
****************
17 是一个质数
18 等于 2 * 9
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************
****************
*****************
******************
19 是一个质数
2019-09-18 16:20
Python_Toni
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-9-18
得分:0 
寻找高手帮忙~
2019-09-18 16:34
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:20 
主要原因是15不是质数,但15%i不为0,所以输出一次**,所以如果你范围加大,则任何不是质数但第一个因数非常大的数都会输出你不想要的*

能编个毛线衣吗?
2019-09-18 17:58
Python_Toni
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-9-18
得分:0 
以下是引用wmf2014在2019-9-18 17:58:16的发言:

主要原因是15不是质数,但15%i不为0,所以输出一次**,所以如果你范围加大,则任何不是质数但第一个因数非常大的数都会输出你不想要的*


多谢!一点即明白。
2019-09-18 19:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-496879-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.346394 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved