|
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的质因数...循环上述步骤
结果
|