wgwfn3 2018-08-29 01:01 采纳率: 0%
浏览 1394
已结题

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

图片说明

要求输入一个整数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条回答 默认 最新

  • tiziana 2018-08-29 02:41
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多