📅  最后修改于: 2023-12-03 15:41:37.797000             🧑  作者: Mango
本程序旨在计算一个正整数列表中,其乘积包含单个不同素数的对的个数。
本程序通过以下算法来计算:
本程序使用 Python 语言实现,代码如下:
from collections import Counter
from typing import List
def factorize(num: int) -> List[int]:
"""
计算一个正整数的质因数分解结果
"""
res = []
i = 2
while i ** 2 <= num:
if num % i:
i += 1
else:
num //= i
res.append(i)
if num > 1:
res.append(num)
return res
def count_pairs(arr: List[int]) -> int:
"""
计算一个整数列表中,其乘积包含单个不同素数的对的个数
"""
primes = Counter()
for num in arr:
factors = factorize(num)
for factor in factors:
primes[factor] += 1
count = 0
for p in primes:
count += primes[p] * (primes[p] - 1) // 2
return count
例如,给定列表 [1, 3, 7, 15, 35]
,其质因数分解结果为:
[[], [3], [7], [3, 5], [5, 7]]
统计得到出现的所有质因数及其次数为:
Counter({3: 2, 5: 2, 7: 2})
因此,可以计算得到其乘积包含单个不同素数的对的个数为 3(其中有 3 对)。