如果给出“ n”,如何找到数字“ n”的原语?

时间:2019-09-05 11:29:09

标签: python

给定数字n,任务是计算其本数。原始数(表示为Pn#)是前n个素数的乘积。数字的本数与数字的阶乘相似。在原始数中,并非所有自然数都会相乘,只有素数会相乘才能计算数字的原始数。用P#表示。

示例:

输入:n = 3

输出:30

Priororial = 2 * 3 * 5 = 30

我认为解决此问题的方法是:

1-编写一个isPrime函数以测试数字是否为质数。

2-编写一个可以打印n个素数的函数(int n), 例如n = 3,然后打印2,3,5三个素数。

3-将所有素数相乘。

我已经尝试过了。在codewars.com上通过了测试用例。但是当函数在随机测试上执行时。这需要太多时间。

import numpy
def num_primorial(n):
    prime_ls = []
    for i in range(2, n + 2):
        if i == 2 or i == 3: prime_ls.append(i)
        else:
            while (1):
                if all(i % j != 0 for j in range(2, i)) and i not in prime_ls:
                    prime_ls.append(i)
                    break
                else: i += 1
    return numpy.prod(prime_ls)

Q1-是否有任何内置函数可以创建等于给定数字的素数列表?

Q2-如何减少大量代码的执行时间?

请帮助我解决此问题。

0 个答案:

没有答案