从品牌网站建设到网络营销策划,从策略到执行的一站式服务
# 2021-05-17 Luke
金乡ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
while True:
num = input("请输入一个正整数:")
i = 1
num_count = []
while i = int(num):
if int(num) % i == 0:
num_count.append(i)
i += 1
print(num + "的公因数有:")
print(*num_count)
def fun(n: int):
L = [ ]
for i in range(2, n // 2 + 1):
if not n % i:
L.append(i)
return L
print(fun(256))
1. 首先解决你的语法问题
i和j是局部变量,只在当前for循环的语句内有效,所以,你的if j==i这一句就访问了一个失效的变量j,同样你的递归调用一样访问了j,因此我建议你在外层循环上面加上一句i = j = 2(反正赋初值不要用0就行,因为你的递归调用k/j可能造成除0异常)
2. 算法问题
你采用了递归求解,k==1作为递归退出条件本身是正确的,而作为参数合法性判断则显得有些不足,我建议应该修改为k = 1。
另外,你的算法会存在一个不影响正常功能的小缺陷,那就是可能重复打印质因子,比如算100的质因子,就会重复打印出两个2和两个5,因为先算出100的质因子2以后,接着算100/2的质因子,而50同样存在质因子2,整个过程就变成了
kj(100)
kj(50)
kj(25)
kj(5)
因此结果是
2
2
5
5
关于这一点,你可以忽略不计,或者通过调整代码自己进行规避
希望我的回答能够对你有所帮助
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图