Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬 프로그램에서 숫자의 고유한 소인수의 곱

<시간/>

이 기사에서 우리는 아래 주어진 문제 설명에 대한 해결책에 대해 배울 것입니다 -

문제 설명

숫자 n이 주어지면 사용 가능한 모든 고유한 소인수의 곱을 찾아 반환해야 합니다.

Input: num = 11
Output: Product is 11

설명

여기에서 입력된 숫자는 1개의 소인수만 있는 11이고 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))

출력

120

모든 변수의 범위는 아래 이미지에 나와 있습니다 -

파이썬 프로그램에서 숫자의 고유한 소인수의 곱

접근법 2

1) n이 2(짝수)로 나누어 떨어지는 동안 2를 출력하고 n을 2로 나눕니다.

2) 1단계 이후에 n은 홀수가 되어야 합니다. 이제 i =3에서 n의 제곱근까지 for 루프를 시작합니다. i가 n을 나누는 동안 i를 인쇄하고 n을 i로 나눕니다. i가 n을 나누는 데 실패하면 i를 2로 증가시키고 프로세스를 계속합니다.

3) n이 소수이고 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

변수의 범위는 아래 이미지에 언급되어 있습니다 -

파이썬 프로그램에서 숫자의 고유한 소인수의 곱

결론

이 기사에서는 무차별 대입 접근 방식과 효율적인 접근 방식을 사용하여 주어진 숫자의 고유한 소인수의 곱에 대해 배웠습니다.