1주차에서 세번째로 풀어보게 될 알고리즘 문제는 바로바로...
완전수 구하기이다.
문제의 출처는 역시나 코딩도장이다.
완전수가 무엇인지는 문제에 설명이 되어있으니 일단 문제를 보자.
자기 자신을 제외한 모든 양의 약수들의 합이 자기 자신이 되는 자연수를 완전수라고 한다.
예를 들면, 6과 28은 완전수이다.
6=1+2+3 // 1,2,3은 각각 6의 약수
28=1+2+4+7+14 // 1,2,4,7,14는 각각 28의 약수
입력으로 자연수 N을 받고, 출력으로 N 이하의 모든 완전수를 출력하는 코드를 작성하라.
휴... 문제가 점점 어려워지는 것 같은 느낌인데 일단 나만 그렇게 느끼는 거라 생각하면서 문제풀이를 해보겠다.
<script>
var perfectNum = [];
var inputNum = Number(prompt("숫자를 입력하세요. 입력한 숫자 이하의 완전수를 출력합니다."));
for (i=1; i<=inputNum; i++) {
var sumNum = 0;
for (j=0; j<i; j++) {
if (i%j===0) {
sumNum += j;
}
}
if (i===sumNum) {
perfectNum.push(i);
}
}
document.write(perfectNum);
</script>
휴... 이중 반복문에다가 조건문까지 난리다.
설명 gogo
모든 학문에서든지간에 정확한 설명을 위해서는 국어 능력이 필수라는 것을 다시금 깨닫는다. 더불어 앞으로 직업으로 먹고 살 이 프로그래밍 능력도 필수라는 것을 깨닫기도 하는 날이다.
ps. 문과라고 해서 모두가 국어를 잘 하지는 않는다. 이것은 나의 이야기.