Problem 1 : 1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?

프로그래밍 공부를 위해 Projetct Euler의 문제 풀이를 연습하는 내용입니다.
문제(problem), 제 답변(answer), 추천하는 타인 답변(solution)으로 구성되어 있습니다.
기본적으로 풀이는 R을 사용하였지만, 일부 연습을 위해 Python으로도 구현해 보았습니다.

Problem

  • 번호 : 1
  • 제목 :
    1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면?
  • 설명 :
    10보다 작은 자연수 중에서 3 또는 5의 배수는 3, 5, 6, 9 이고, 이것을 모두 더하면 23입니다.
    1000보다 작은 자연수 중에서 3 또는 5의 배수를 모두 더하면 얼마일까요?

Answer & Solution - R

  • 1부터 1000까지 1씩 증가(i)

  • 3 또는 5로 나누었을때, 나머지가 0인 경우 해당 수(i)를 총합(sum)에 더하기

  • code : R 코드

# Answer

sum = 0
for (i in 1:1000){
  if (i %% 3 == 0){
    sum = sum + i

  } else if (i %% 5 == 0){
    sum = sum + i

  } else {

  }
  cat(i, "|", sum, "\n")
}

## 234168
# Solution

problem1 <- function(a){
  sum = 0
  for (i in 1:a){
    if (i %% 3 == 0){
      sum = sum + i
    } else if (i %% 5 == 0){
      sum = sum + i
    } else {

    }
  }
  return(sum)
}

print(problem1(10))
print(problem1(1000))

## 234168

Answer & Solution - Python

# Answer

sum = 0
for i in range(1,1000):
    if (i % 3 == 0) or (i % 5 == 0):
        sum += i

    print(i, sum)

## 234168
# Solution

def problem1(a):
    sum = 0
    for i in range(1, a):
        if (i % 3 == 0) or (i % 5 == 0):
            sum = sum + i
    return sum

print(problem1(10))
print(problem1(1000))

## 234168

System Info.

PyCharm 2019.1 EAP (Community Edition)
Build #PC-191.6014.12, built on March 6, 2019
JRE: 11.0.2+159 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1
R version 3.5.2 (2018-12-20)
Python 3.6.6
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
RStudio version 1.1.463