要求输入一个整数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
把最外层的While循环改成For循环,进而减少循环深度,或许能解决你的问题。
当输入的数比较大时,你的选用的逻辑方法循环层次太深,超出了堆栈容限,机器处理不过来。
你说的超时是什么意思?如果你嫌耗时太长的话,可以想办法把print打印方式改一下,1.如果是输出到文件会大量减少你的耗时。2.拖到cmd窗口之后 在
后面加上>1.txt 这会把打印内容输入到1.txt会大量减少时间,因为print多的话是很花时间的。代码逻辑没怎么看,看着蛋疼
额,虽然不想说,但是,你这个程序运行起来没问题,唯一就是你input没给提示,所以我猜想你是不是一直在等它提示你输入啊。。。。。。