Python
 Computer >> コンピューター >  >> プログラミング >> Python

数の一意の素因数の積のためのPythonプログラム


この記事では、以下に示す問題ステートメントの解決策について学習します-

問題の説明 −数値nが与えられた場合、利用可能なすべての固有の素因数の積を見つけて返す必要があります。

たとえば、

Input: num = 11
Output: Product is 11
Explanation:
Here, the input number is 11 having only 1 prime factor and it is 11.
And hence their product is 11.

アプローチ1

i=2からn+1までのforループを使用して、iがnの因数であるかどうかを確認し、次に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

すべての変数の範囲は、下の画像に示されています-

数の一意の素因数の積のためのPythonプログラム

アプローチ2

  • nは2(偶数)で割り切れますが、2を出力し、nを2で割ります。

  • ステップ1の後、nは奇数になる必要があります。ここで、i=3からnの平方根までforループを開始します。 nを除算しながら、Iを出力し、nをiで除算します。 nの除算に失敗したら、Iを2ずつインクリメントして、プロセスを続行します。

  • nが素数で、2より大きい場合、上記の2つのステップでnが1になることはありません。したがって、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

変数のスコープは、下の画像に示されています-

数の一意の素因数の積のためのPythonプログラム

結論

この記事では、ブルートフォースアプローチと効率的なアプローチを使用して、特定の数の一意の素因数の積について学びました。


  1. n番目のフィボナッチ数のPythonプログラム

    この記事では、n番目のフィボナッチ数を計算します。 フィボナッチ数 以下に示す漸化式によって定義されます- Fn = Fn-1 + Fn-2 あり F 0 =0およびF1 =1。 まず、フィボナッチ数はほとんどありません 0,1,1,2,3,5,8,13,.................. フィボナッチ数を計算できます 再帰と動的計画法の方法を使用します。 それでは、Pythonスクリプトの形式での実装を見てみましょう アプローチ1:再帰方法​​ 例 #recursive approach def Fibonacci(n):    if n<0: &

  2. n番目のカタラン数のPythonプログラム

    この記事では、n番目のカタラン数の計算について学習します。 カタラン数 再帰式-によって定義される自然数のシーケンスです。 $$ C_ {0} =1 \:and \:C_ {n + 1} =\ displaystyle \ sum \ Limits_ {i =0} ^ n C_ {i} C_ {n-i} for \:n \ geq0; $$ n =0、1、2、3、…の最初のいくつかのカタラン数は 1、1、2、5、14、42、132、429、..............です。 .... カタラン数は、再帰と動的計画法の両方で取得できます。その実装を見てみましょう。 アプローチ1:再