Project Euler - 003(Largest prime factor)
사이트
문제
영문
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
한글
어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.
예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.
600851475143의 소인수 중에서 가장 큰 수를 구하세요.
풀이과정
- 소인수가 저장될 리스트
lst = []를 만든다. - 소인수는 2부터 시작한다.
- 구하고자 하는 수를 2로 나누어 떨어진다면 2는 소인수이다. 그렇다면 다음 수를 구하기위해 원 수에서 x를 나누어 나온 몫을 다시 구하고자 하는 수에 넣는다.
- 만약 나누어 떨어지지 않는다면 그 수는 소인수가 아니고 하나를 증가(x+1)시켜 다시 계산하도록 한다.
- 제수가 피제수보다 커지면 모든 소인수를 다 구한 것이다.(더이상 나눌 수가 없음)
내가 푼 답안
lst = # 소인수가 저장될 리스트n = 600851475143 # 소인수 구할 수x = 2 # 최초로 나눌 수(나눠지지 않으면 +1 씩 커진다)'''n(피제수 : 나누어 지는 수)이 x(제수 : 나누는 수)로 나뉘게 될 때제수(x)가 피제수(나누어 지는 수) 보다 커지면 반복문을 종료한다.'''while x <= n:if n % x == 0: # 피제수가 제수에 나누어 진다면 x는 n의 소인수 이다.# 소인수를 리스트에 추가n /= x # 피제수를 소인수로 나눈 몫을 다음 피제수로 한다.else :x += 1 # 나누어 지지 않는다면 소인수가 아님(제수를 하나 증가시킨다)print(lst)
#Project_Euler #question3 #프로젝트_오일러 #python3
댓글 없음:
댓글 쓰기