用于数字的唯一素因数乘积的 Python 程序

pythonserver side programmingprogramming更新于 2025/11/20 0:12:17

在本文中,我们将学习以下问题陈述的解决方案 −

问题陈述 − 给定一个数字 n,我们需要找到其所有可用的唯一素因数的乘积并返回它。

例如,

输入:num = 11
输出:乘积为 11
说明:
这里,输入数字是 11,只有 1 个素因数,即 11。
因此它们的乘积是 11。

方法 1

使用从 i = 2 到 n+1 的 for 循环检查 i 是否是 n 的因子 &然后检查 i 是否是素数本身,如果是则将乘积存储在乘积变量中并继续此过程直到 I 变为 = n。

示例

def productPrimeFactors(n):
   product = 1
   for i in range(2, n+1):
      if (n % i == 0):
         isPrime = 1
         for j in range(2, int(i/2 + 1)):
            if (i % j == 0):
               isPrime = 0
               break
         if (isPrime):
            product = product * i
   return product
# main
n = 18
print (productPrimeFactors(n))

输出

6

所有变量的范围如下图所示 −

方法 2

  • 当 n 可以被 2(偶数)整除时,打印 2 并将 n 除以 2。

  • 在步骤 1 之后,n 必须变为奇数。现在从 i = 3 开始一个 for 循环,直到 n 的平方根。当 I 整除 n 时,打印 I 并将 n 除以 i。当 I 无法整除 n 时,将 I 增加 2 并继续该过程。

  • 如果 n 是素数且大于 2,则 n 不会通过上述两个步骤变为 1。因此,如果 n 大于 2,则打印 n。

示例

import math
def productPrimeFactors(n):
   product = 1
   # prime factor 2
   if (n % 2 == 0):
      product *= 2
      while (n%2 == 0):
         n = n/2
# n must be odd
for i in range (3, int(math.sqrt(n)), 2):
   # While i divides n, print i and
   # divide n
   if (n % i == 0):
      product = product * i
      while (n%i == 0):
         n = n/i
   # n is a prime number greater than 2
   if (n > 2):
      product = product * n
   return product
# main()
n = 8
print (int(productPrimeFactors(n)))

输出

2

下图中提到了变量的范围 −

结论

在本文中,我们学习了使用强力方法和有效方法计算给定数字的唯一素因数的乘积。


相关文章


有用资源