注册 登录
编程论坛 Python论坛

求质数游戏,遇到小BUG, 求教。。。莫名其妙,多出“**”?

Python_Toni 发布于 2019-09-18 16:20, 1198 次点击
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 是一个质数
3 回复
#2
Python_Toni2019-09-18 16:34
寻找高手帮忙~
#3
wmf20142019-09-18 17:58
主要原因是15不是质数,但15%i不为0,所以输出一次**,所以如果你范围加大,则任何不是质数但第一个因数非常大的数都会输出你不想要的*
#4
Python_Toni2019-09-18 19:20
以下是引用wmf2014在2019-9-18 17:58:16的发言:

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


多谢!一点即明白。
1