[그림 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로 바꾸었습니다.


+ Recent posts