[그림 01] Problem 001의 문제
문제를 살펴보면 다음과 같습니다.
문제 이름 : 3과 5의 배수
문제 내용 : 만약 10 미만의 숫자 중에서 3이나 5의 배수인 것을 골라보았을 때, 우리는 3, 5, 6 그리고 9를 얻을 수 있습니다. 그리고 그들의 합은 23입니다. 3과 5의 배수 중 1000 미만의 숫자를 골라서 그들의 합을 구하십시오.
즉 우리는 다음과 같은 조건을 가진다는 것을 알 수 있습니다.
1. 3과 5의 배수를 모두 골라내야 함
2. 골라낸 배수들을 모두 더해야 함
3. 골라낸 배수들은 절대 1000이상이 되어서는 안 됨
이제 소스를 작성해보도록 합시다.
#project euler Problem 001 #python 3 version source def find_multiples(number): #3과 5의 배수를 구하는 함수 temp01 = number % 3 temp02 = number % 5 if temp01 == 0 or temp02 == 0: return number else: return 0 if __name__ == "__main__": limit = 1000 #한계 범위 answer = 0 for i in range(3,limit): #3에서부터 한계범위 answer += find_multiples(i) print(answer)
find_multiples 함수는 숫자를 인자값으로 받아서 이 값이 3의 배수이거나 5의 배수인지를 검사한 후 만약 참일 때 리턴하여 더할 수 있도록 하였고, 만약 거짓일 경우 0을 더하는(더하나 마나 하는 행위) 기능을 합니다.
그리고 모두 더해진 값을 print()로 출력하게 됩니다.
저보다 잘한 사람은 늘 있습니다.
저는 그 분들의 소스를 참고하고자 합니다.
출처 : http://www.s-anand.net/euler.html
n = 0 for i in range(1,1000): if not i % 5 or not i % 3: n = n + i print(n)
맞아..! not이 있었어어어...!!!
P.S python 3.0에서는 xrange가 사라졌습니당. 기존의 range()의 범위가 들쭉날쭉하던 것을 python 3.x에서는 xrange == range로 바꾸었습니다.
'PYTHON > Project Euler(프로젝트 오일러)' 카테고리의 다른 글
Problem_009_Special Pythagorean triplet (0) | 2017.01.20 |
---|---|
Problem_008_Largest product in a series (0) | 2017.01.09 |
Problem_007_10001st prime (0) | 2017.01.09 |
Problem_006_Sum square difference (0) | 2017.01.07 |
Problem_005_Smallest Multiple (0) | 2017.01.06 |
Problem_004_Largest palindrome product (0) | 2017.01.03 |
Problem_003_Largest prime factor (0) | 2016.12.30 |
Problem_002_Even Fibonacci numbers (0) | 2016.12.28 |