n | result |
---|---|
15 | 4 |
이중 for 문을 돌려 쉽게 구하는 방법이 있으나,
n의 값이 커지면 효율성이 떨어지는 측면이 있어서
다른 방법이 있나 고민을 하였다.
시작값이 a 이고, 연속하는 m 개의 자연수의 합이 n 이라고 가정하면
범위 안의 자연수의 합은 아래와 같다.
$$ n = (a + (a+m-1)) * m / 2 $$
$$ = (m^2 + 2am - m) / 2 $$
$$ = (m^2 + m + 2am - 2m) / 2 $$
$$ = m(m+1)/2 + (a - 2)m $$