| 
 | 
 
 
发表于 2020-7-7 22:52:51
|
显示全部楼层
   本楼为最佳答案    
 
 
 本帖最后由 Twilight6 于 2020-7-7 22:56 编辑  
 
 
 
你需要判断最后的数是不是素数,否则效率太低了,到 479 的时候其实那个数已经是质数了 
 
而你的循环要 +1 慢慢加到 3726718043 才会停止循环,此时直接判断是否为素数就行了: 
 
- while True:
 
 -     a = input('请输入准备分解因数的正整数:')
 
 -     b = float(a)
 
 -     c = int(b)
 
 -     if b - c != 0 or b <= 0:
 
 -             print('False')
 
 -     else:
 
 -         d = 2
 
 -         while d <= b:
 
 -             if b % d == 0:
 
 -                 print(d)
 
 -                 b = b / d
 
 -                 d = 2
 
 -             else:
 
 -                 d +=1
 
  
-                 for i in range(2,int(b**0.5)+1):
 
 -                     if not (b % i):
 
 -                         break
 
 -                 else:
 
 -                     print(b)
 
 -                     break
 
 -         print('分解因数完成')
 
  复制代码 
 
运行结果: 
- 请输入准备分解因数的正整数:99965484785432
 
 - 2
 
 - 2
 
 - 2
 
 - 7
 
 - 479
 
 - 3726718043.0
 
 - 分解因数完成
 
  复制代码 
 
 |   
 
 
 
 |