이 기사에서 우리는 아래 주어진 문제 설명에 대한 해결책에 대해 배울 것입니다 -
문제 설명
숫자 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
변수의 범위는 아래 이미지에 언급되어 있습니다 -
결론
이 기사에서는 무차별 대입 접근 방식과 효율적인 접근 방식을 사용하여 주어진 숫자의 고유한 소인수의 곱에 대해 배웠습니다.