跪求各位大神!!python的因式分解 Time Limit Exceeded 20C

图片说明

要求输入一个整数n,输出n的所有因式分解式子。如输入n=12,则输出12=2x2x3

12=2x6 12= 3x4 12=12 具体要求见图片,我自己写的代码总是超时,哪位好心的大神帮忙看看 这题怎末破

 flag = 0
s = input()
num = int(s)
num1 = num
num2 = str(num)
s1 = []
s = num2+'='
i = 2
if num == 1:
    print('1=1')
    flag = 1
if num == 0:
    print('0=0')
    flag =1
while flag == 0:
    if num%i == 0:
        if num/i<i:
            i = num
        s1.append(int(i))
        num = num/i
        if num==1:
            s = str(num2)+'='
            for j in range(0,len(s1)):
                if j< len(s1)-1:
                    s = s+str(s1[j])+'*'
                else:
                    s = s+str(s1[j])
            print(s)
            if len(s1)>1:
                a = i * s1[len(s1)-2] 

                b = s1[len(s1)-2] 
                if a / (b+1) < (b+1):
                    s1.pop()
                    s1.pop()
                    num = a
                    i = a
                else:
                    s1.pop()
                    s1.pop()
                    b = b+1
                    while not a%b==0:
                        b = b+1
                    num = a
                    i = b
            else:
                flag=1

    else:
        i = i + 1


3个回答

把最外层的While循环改成For循环,进而减少循环深度,或许能解决你的问题。
当输入的数比较大时,你的选用的逻辑方法循环层次太深,超出了堆栈容限,机器处理不过来。

你说的超时是什么意思?如果你嫌耗时太长的话,可以想办法把print打印方式改一下,1.如果是输出到文件会大量减少你的耗时。2.拖到cmd窗口之后 在
后面加上>1.txt 这会把打印内容输入到1.txt会大量减少时间,因为print多的话是很花时间的。代码逻辑没怎么看,看着蛋疼

额,虽然不想说,但是,你这个程序运行起来没问题,唯一就是你input没给提示,所以我猜想你是不是一直在等它提示你输入啊。。。。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐