在Python中找到第一百万个自然数的乘积

问题描述 投票:0回答:1

我刚开始使用Python编程语言。我试图编写一个函数,该函数需要输入一个列表或多个整数来查找其乘积。我正在尝试查找前百万个自然数的乘积,但其显示为MemoryError

def product(*arg):
    answer=1
    if type(arg) == tuple:
        arg=str(arg)
        arg=arg.lstrip('[(')
        arg=arg.rstrip('],)')
        arg=arg.split(',')
        for i in arg:
            answer*=int(i)
        return answer
    else:
        for i in arg:
            answer*=int(i)
        return answer

j=range(1,1000000,1)
j=list(j)
print(product(j))

步骤:

  • 如果我要传递列表,则将范围对象转换为列表对象参数
  • 现在,在函数中,我尝试通过转换来拆分元组字符串。
  • 我将结果字符串转换为列表,然后在查找产品的要素

Q1:当我尝试查找前百万个自然数的乘积时如何避免内存错误?

Q2如何改进此代码?

python python-3.x list function out-of-memory
1个回答
0
投票

要计算一个从1到1百万的所有数字的乘积,请使用一个简单的循环:

r = 1
for l in range(1,1000000):
    r*=(i+1)
print(res)

但是请记住,结果将是一个很大的数字。这意味着您的计算可能要花很长时间,并且所得的数字将不适合您的内存,这就是为什么您会收到内存错误btw。

© www.soinside.com 2019 - 2024. All rights reserved.