JavaScript 코딩테스트 약수의 합 (14일)

약수의 합.. 소인수분해..?
마땅한 계산식이 떠오르지 않아서 고민했다.

가장 익숙한 for문을 또 써서 해봤는데, 그래도 수식 자체는 맞은듯하다
실행은 됬다.. 다만 결과가 틀릴뿐
for문에서 실행문장을 잘 적으면 될 것 같았는데 마땅히 생각나지가 않았다.

그러다가 Chat GPT에게 슬쩍 물어봤더니 for문 안에다가 if문을 넣어서 실행문장을 적더라..! 그렇게해도 되는구나!

for문은 저번 3일차쯤에 숙지했고 이제 그 안에 들어간 if문의 수식을 이해해봐야한다.
for (let i = 0; i <= n; i++) { if (n % i === 0) {sum += i;} }
if문 : n을 i로 나눴을 때 나머지가 0인 경우에는 sum에 i를 더한다.
n이 5일 때
: i는 0 > 5(n)은 0(i)보다 크다 > if문에서 5를 0(i)으로 나눴을 때 0으로 나눠지지 않으니 sum에 0(i)을 더하지 않는다.
: i는 1 > 5(n)은 1(i)보다 크다 > if문에서 5을 1(i)로 나눴을 때 나머지가 0이니까 sum에 1(i)를 더해준다.
: i는 2 > 5(n)은 2(i)보다 크다 > if문에서 5를 2(i)로 나눳을 때 나머지가 1로 남는다. if문을 통과하지 못해 sum에 숫자를 더하지 않는다.
: i는 3 > 5(n)은 3(i)보다 크다 > if문에서 5를 3(i)로 나눴을 때 나머지가 2로 남는다. if문을 통과하지 못해 sum에 숫자를 더하지 않는다.
: i는 4 > 5(n)은 4(i)보다 크다 > if문에서 5를 4(i)로 나눴을 떄 나머지가 1로 남는다. if문을 통과하지 못해 sum에 숫자를 더하지 않는다.
: i는 5 > 5는(n) 5(i)보다 크거나 같다 > if문에서 5를 5(i)로 나눴을 때 나머지가 0으로 남지 않는다. if문을 통과하여 sum(1)에 5를 더해준다.
결론적으로 sum를 리턴시키면 sum는 6이라는 결론이 나온다

다 풀고나서 다른사람 풀이도 봤는데
i를 애초에 1로부터 지정 할 수 있더라..! 0으로는 나눠지지 않았을테니까... 이부분은 생각 못했다.