使用python编程找到G的不同素数的数量吗?

时间:2018-08-05 11:23:32

标签: arrays python-3.x list

我只是为了解决这个编程问题而浪费了我的2个小时。如果有人知道这样做的窍门,请分享一下。问题在下面给出。

您给了一个具有N个整数的数组A。假设G是A的所有元素的乘积。您必须找到G的不同素数的数量。

输入格式 给定的第一个参数是具有N个整数的数组A。

输出格式 返回一个整数,即 G。 约束条件 1 <= N <= 1e5 1 <= A [i] <= 1e5

例如

输入: A = [1、2、3、4]

输出: 2 说明: 这里G = 1 * 2 * 3 * 4 = 24 和G的不同素数是[2,3]

1 个答案:

答案 0 :(得分:2)

由于这似乎是一个家庭作业问题,所以我将朝着正确的方向努力。

从理论上讲,这是一件非常简单的事情。任何人都可以编写遍历数组并乘以其元素的代码。寻找伪代码(甚至是实代码)来将数字分解为主要因子也很容易。

但是,这种方法在这里行不通,因为我们将处理巨大的数字。给定约束,G的最大值为(10 is)^(10⁵)=10⁵⁰⁰⁰⁰⁰。到目前为止,这超过了可观测宇宙中的电子数量。我们无法分解如此庞大的数字。

但是幸运的是,我们不需要知道G的值。我们只需要计算G的素因数,但是我们不需要知道G的值。因此,您将不得不分解数组中的各个数字。我会推荐这样的代码:

factors = set()
for num in A:
    f = factorize(num) # Function that returns the set of prime factors in num
    factors |= f # Add all elements in f to factors

您只对 distinct 主要因子感兴趣,因此使用set可以解决这一问题。只需添加所有内容,它就会自动丢弃所有重复项。 factorize(x)是一个您需要编写的函数,该函数以数字作为参数并返回一组素数。

祝你好运!