주 요인과 제수를 찾는 것에 대한 게시물을 보았지만 파이썬에서 요인에 대한 질문에 대한 답을 찾지 못했습니다. 나는 기본 요소 목록을 가지고 있습니다. 즉, 24
은 [2,2,2,3]
입니다. 이 목록에서 가능한 모든 factorisation, 즉 24
에 대한 출력은 [[2,12], [3,8], [4,6], [2,2,6], [2,3,4], [2,2,2,3]]
이어야합니다. itertool 접근법을 시도했지만 중복 응답이 많았고 다른 것을 잊어 버렸습니다 ([2,3,4]
을 찾았지만 [4,6]
은 무시한 것처럼).파이썬의 소수 요소 목록에서 가능한 모든 요인을 만듭니다.
저는 특히 생성 된 소수 요소 목록을 사용하는 접근 방식에 관심이 있습니다. 재귀 함수로 해결 방법을 찾았습니다.
def factors(n, n_list):
for i in range(2, 1 + int(n ** .5)):
if n % i == 0:
n_list.append([i, n // i])
if n // i not in primes: #primes is a list containing prime numbers
for items in factors(n // i, []):
n_list.append(sorted([i] + items))
fac_list = [[n]] #[n] has to be added manually
for facs in n_list: #removes double entries
if facs not in fac_list:
fac_list.append(facs)
return fac_list
큰 숫자의 경우 n은 시간이 많이 걸리지 만 소수가 아닌 모든 숫자를 조사해야하기 때문에 시간이 오래 걸립니다. 소수 요소 목록에 대한 결합론 접근법은 훨씬 빠릅니다.
편집 : 여러 리소스를 살펴본 후에 가장 좋은 전략은 가장 높은 정답 인 here on SO입니다. 간결하고 쉽게 모든 언어로 구현할 수있는 사람이 선호합니다. 경우 폐쇄.
첫 번째 게시물 인 jmd_dk을 포맷 해 주셔서 감사합니다. 나는 그 변화에주의를 기울 였고이 규칙들을 기억하려고 노력할 것이다. 적절한 들여 쓰기를위한 코드에 대해 "오른쪽/왼쪽으로 블록 변경"명령이 있습니까? 아니면 각 줄에 수동으로 4 칸을 추가해야합니까? – MrT
초심자의 실수 - '{}'버튼을 사용하여 코드의 형식을 지정하면됩니다. – MrT