| 
 | 
 
10鱼币 
大佬们,我正在写一个分解质因数的代码,我把自己都写蒙了 
 
我现在的思路是:写两个函数,一个用来获取因数,另一个人用来判断是不是质数,如果是那就把那个数加到一个列表里,如果不是就用那个数作为参数在运行第一个函数 
 
 
 
 
这是我现在的代码: 
 
- zhishu = []
 
 - def zs(g):
 
 -     for z in range(2,g):
 
 -         if num%z == 0:
 
 -             d = True
 
 -             break
 
 -         else:
 
 -             d = False
 
 -     if d:
 
 -         zhishu.append(g)
 
 -     else:
 
 -         zys(g)
 
  
- def zys(n):
 
 -     for yinshu in range(2,n):
 
 -         if num%yinshu == 0:
 
 -             zs(yinshu)
 
 -         else:
 
 -             zys(v)
 
  
- print('\n---------------------------分解质因数---------------------------\n')
 
 - num = int(input('请输入一个数字:'))
 
  
- v = num
 
 - zys(v)
 
 - print(zhishu)
 
  复制代码 
 
我感觉是zys这个函数有些问题,求大佬指点
最直接(暴力)的思路: 
例如 
求20的质因数,找到2并存储2,然后20除找到的质因数(2)等于10。 
求10的质因数,找到2并存储2,然后10除找到的质因数(2)等于5。 
求5的质因数...循环上述步骤
 - def zys(num):                                           #求质因数
 
 -     while num > 1:
 
 -         for yinshu in range(2,num+1):
 
 -             if num % yinshu == 0:
 
 -                 zhiyinshu.append(yinshu)
 
 -                 break
 
 -         num //= yinshu
 
  
- def show_zys():                                         #显示质因数
 
 -     print(str(num) + ' = ', end = '')
 
 -     for i in range(len(zhiyinshu)):
 
 -         if i != len(zhiyinshu) - 1:
 
 -             print(str(zhiyinshu[i]) + '×', end = '')
 
 -         else:
 
 -             print(zhiyinshu[i])
 
 -         
 
 - zhiyinshu = []
 
 - num = int(input('请输入一个数字:'))
 
 - zys(num)
 
 - show_zys()
 
  复制代码 
结果
  
 
 
 |   
 
 
最佳答案
查看完整内容 
最直接(暴力)的思路:
例如
求20的质因数,找到2并存储2,然后20除找到的质因数(2)等于10。
求10的质因数,找到2并存储2,然后10除找到的质因数(2)等于5。
求5的质因数...循环上述步骤
结果 
 
 
 
 
 
 
 |