2017-03-17 3 views
1

5 질문 (12)가 나는 pyschools 관행을하고 있어요 그리고 난 주제에 문제가 동일한 정수를 되찾기 위해 함께 멀티플 될 수 있습니다. Pyschools 소인수 분해

Examples 

    >>> primeFactorization(60) 
    [2, 2, 3, 5] 
    >>> primeFactorization(1050) 
    [2, 3, 5, 5, 7] 
    >>> primeFactorization(1) 
    [] 

내 코드입니다 : 나에게 반환

import operator 
import functools as fun 

def primeFactorization(num): 
    num = num 
    primes = [] 
    result = [] 
    if num > 1: 
     [primes.append(x) for x in range(2, num) if all(x % y != 0 for y in range(2, x))] 
    multy = fun.reduce(operator.mul, result, 1) 
    for number in primes: 
     if num % number == 0 and multy != num: 
      result.append(number) 
    return result 

이 :

import operator 
import functools as fun 

def primeFactorization(num): 
    num = num 
    primes = [] 
    result = [] 
    if num > 1: 
     [primes.append(x) for x in range(2, num) if all(x % y != 0 for y in range(2, x))] 
    multy = fun.reduce(operator.mul, result, 1) 
    for number in primes: 
     if num % number == 0: 
      result.append(number) 

    multy = fun.reduce(operator.mul, result, 1) 
    y = num/multy 
    if y != 1 and y in primes: 
     result.insert(0, int(y)) 
    return result 

Test Cases    Expected Result Returned Result 
primeFactorization(33) [3, 11]   [3, 11] 
primeFactorization(84) [2, 2, 3, 7] [2, 2, 3, 7]  
Private Test Cases  Passed   Failed 
primeFactorization(1) []    [] 
:이 tryed했습니다

Test Cases    Expected Result Returned Result 
primeFactorization(33) [3, 11]   [3, 11] 
primeFactorization(84) [2, 2, 3, 7]  [2, 3, 7]  
primeFactorization(1) []     [] 

와 나는 개인 테스트 케이스가 실패 받고 있어요

내가 뭘 할 수 있습니까?

답변

2

왜 그렇게 복잡합니까? 주어진 숫자 X의 모든 기본 요소를 찾는 문제는 X을 나눌 수있는 가장 작은 숫자 (1보다 큰 숫자) 집합을 찾는 것과 같습니다. 이 문제를 해결하기 위해 가장 작은 숫자 n을 찾아서 X으로 나눌 수 있습니다. 이것은 첫 번째 소수 요소 인 X입니다. 우리는 그 다음은 일, 유일한 것은 primeFactorization이하고 일 경우 (1) [] [1]하는 내가 만들어졌다, X/n

def primeFactorization(X): 

    possible = [2] + range(3,int(ceil(sqrt(X)))+1,2) 

    for p in possible: 
     if X % p == 0: 
      return [p] + primeFactorization(X/p) 

    return [X] 


primeFactorization(3*3*7*5*11*13*31) 

> [3,3,5,7,11,13,31] 
+0

확실히의 주요 요인을 발견하여 소인수의 나머지 부분을 찾을 수 있습니다 좋은 직업은 당신에게 감사한다 :) –