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 | 31 |
Tags
- Heat Equation
- Fluids
- 통계학
- regression
- Turbulent
- 예제
- Python
- 회귀
- 프로젝트오일러
- python3
- Boundary Layers
- Fluid Dynamics
- Blasius
- 힙
- Compressible Flow
- 프로그래머스
- projecteuler
- Statistics
- FTCS
- 파이썬
- 디스크 컨트롤러
- 유체역학
- Finite Difference Method
- Laminar
- heap
- Navier-Stokes
- 우선순위큐
- 이중우선순위큐
- Crank-Nicolson
- programmers
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 |