该代码用于查找1000位数字的13个连续数字的最大可能乘积。当我尝试在IDLE上运行它时,它只是提供了RESTART以及我保存.py文件的目录。当我在Pycharm上尝试此操作时(我知道它不是IDE的问题,但我只需要尝试),没有输出。难道我做错了什么?
n=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
s=[]
j=13
def product(j):
p = 1
for i in range(j,j+13):
p=p*s[i]
return(p)
for i in range(0,1000):
s=s+[n%10]
n=n//10
k = product(0)
c=k
while j<1000:
if s[j]==0:
j=j+1
c=product(j)
while c==0:
j=j+13
c=product(j)
else:
c=(c*s[j+13])/s[j]
if c>k:
k=c
print(k)
最佳答案
您的原始代码可以简化为以下内容。
n=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
def product(j):
p = 1
for i in range(j,j+13):
p=p*s[i]
return(p)
s=[]
for i in range(0,1000):
s=s+[n%10]
n=n//10
k = 0
N = len(s)
j = 0
while j<N-13: #need to 13 elements before end
c = product(j)
if c>k:
k=c
j = j + 1
print(k)
结果:23514624000
即使不通过以下方法求助于Numpy,也可以更轻松地生成该文件:
digits = str(n) # generates digits of number
products = [product(j) for j in range(1000-13)] # list comprehension
# uses you product function
print(max(products))