Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 프로젝트오일러
- Finite Difference Method
- Compressible Flow
- 디스크 컨트롤러
- heap
- 이중우선순위큐
- Laminar
- 예제
- 우선순위큐
- projecteuler
- Python
- regression
- Turbulent
- Heat Equation
- Blasius
- 유체역학
- programmers
- Navier-Stokes
- 통계학
- Boundary Layers
- FTCS
- Fluids
- 힙
- 회귀
- Crank-Nicolson
- 파이썬
- python3
- 프로그래머스
- Statistics
- Fluid Dynamics
Archives
- Today
- Total
Sudal's Garage
Project Euler 3 본문
Question:
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의 소인수 중에서 가장 큰 수를 구하세요.
Solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from math import sqrt primes = set([2]) value = 3 number = 600851475143 while value < sqrt(number): isPrime = True for k in primes: if value % k == 0: isPrime = False value += 2 if isPrime: primes.add(value) if number % value == 0: print(value) number /= value print(int(number)) | cs |
square root를 쓰기위해서 모듈 math 에서 메소드 sqrt 를 import 해왔다.
가장 큰 소인수는 sqrt(number)보다 작은 점을 이용하여 while loop을 짜고,
for loop 에서 소수인지 확인, 아닐경우 2를 더해주고, 소수일 때 까지 반복. 2를 제외한 짝수는 소인수가 될 수 없기 때문.
소인수일 경우에는, 본 수를 나눈다.
1 2 3 4 5 6 7 | from math import sqrt from sympy import sieve number = 600851475143 primes = list(sieve.primerange(1,sqrt(number))) print([primes[x] for x in range(len(primes)) if number % primes[x] == 0][-1]) | cs |
후에, 모듈 sympy 에서 prime number 를 출력해주는 함수를 찾게 되었고
2019/01/29 - [Programming/python] - Module: sympy
이렇게 업그레이드 되었다!
'Programming > Project Euler - python' 카테고리의 다른 글
Project Euler 5 (0) | 2019.01.30 |
---|---|
Project Euler 4 (0) | 2019.01.30 |
Project Euler 2 (0) | 2019.01.30 |
Project Euler 1 (0) | 2019.01.30 |
Project Euler (0) | 2019.01.30 |