鱼C论坛

 找回密码
 立即注册
查看: 1845|回复: 2

关于python2求助

[复制链接]
发表于 2017-2-15 22:32:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下,对正整数X分解质因数,分解的因数用new_ls数列输出。为何只有当X输入9,25,49等两个相同的素数相乘的数时,才能正常运行,输入其他数返回list index out of range。新手求解答!!!

def a(n):
        ls_0=[]
        for i in range(1,n):
                for l in range(2,i):
                        if(i%l==0):
                                break
                        if(l+1==i):
                                ls_0.append(i)
        return ls_0


x=int(raw_input("<"))
ls=a(x)
m=0
new_ls=[]
while(x!=ls[m]):
        if(x%ls[m]==0 and x!=ls[m]):
                x=x/ls[m]
                new_ls.append(ls[m])
        else:
                m+=1
new_ls.append(ls[m])

print new_ls

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-15 23:24:17 | 显示全部楼层
  1. # -*- coding: utf-8 -*-
  2. def fenjie(n,lst=[]):
  3.     if n == 1: return lst
  4.     for i in range(2,n+1):
  5.         if n%i==0:
  6.             lst.append(i)
  7.             return fenjie(n//i,lst)
复制代码
  1. print(fenjie(100))
  2. >>>[2, 2, 5, 5]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-2-16 09:25:25 | 显示全部楼层
while(x!=ls[m]):
这一句明显有问题啊
因为当我输入7的时候
ls的元素只有[3,5]长度为2
按你的判定条件的话,m最后的值是2,那就已经溢出了
循环条件要换成列表长度好一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 06:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表