테스트 사이트 - 개발 중인 베타 버전입니다

1000 의 모든 약수의 합

아래의 문제의 답을 도출하는 과정을 프로그래밍 언어로 구현하시오.(php, javascript... 뭐든 좋습니다)

 

예제)

10 의 모든 약수의 합을 구하시오.

예제정답) 1 + 2+ 5 + 10 = 18

 

 

문제)

1000 의 모든 약수의 합을 구하시오.

 

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 7개

수학적 지식이 없을 때 나오는 막코딩의 좋은 예.php
이 방법은 처음 1을 구할 수가 없네요. ㅠㅠ

<?php
$input = 1000;
$try = $input / 2;
$return = 1;
for ($i=1;$i<=$try;$i++) {
$x = $input / $i;
if (is_int($x)) $return += $x;
}
echo $return;
?>
엉터리 답일 수도 있는데....
그런데 정답이면 상품이 뭐 있을까요?

<?php
$Fnumber = "1000";
$sum = 0;
for($i=1;$i<=$Fnumber;$i++)
{
if ($Fnumber % $i == 0)
{
echo " {$i}";
$sum = $sum + $i;
}
}
echo "<BR>\n";
echo "합 계 : ".$sum;
?>
위의 답이 맞다면...
자바스크립트는...

<script>
var Fnumber = 1000;
var sum = 0;

for(var i=1;i <= Fnumber;i++)
{
if (Fnumber % i == 0)
{
document.write(i);
sum = sum + i;
}
}
Total = "<br>합 계 : " + sum;
document.write(Total);
</script>
$n = 1000 ;
$sum = 0;
$j = (int) sqrt($n);
for ($i = 1; $i <= $j; $i++)
if ($n % $i == 0) $sum += $n / $i + $i;
echo $sum;
오~ 모두들 너무 좋은 답안을 제시하셨습니다.

슈와이님의 답변이 위 답변 중에는 최소의 반복으로 소수의 합을 구할 수 있을거 같아요~~
왜 그런지 모르겠지만 $n이 100일때와 10000, 1000000 일 때는 결과 값이 다르게 나오네요..
입력값의 제곱근이 정수로 나올때 약수가 한번더 더해지는 오류가 있네요
$n =100 이고 $i = 10 일때
if ($n % $i == 0) $sum += $n / $i + $i;
$sum += 100 / 10 + 10; 이 되어 10 이 두번 더해짐

// 수정
$n = 100;
$j = sqrt($n);
for ($i = 1; $i <= $j; $i++)
if ($n % $i == 0) $sum += $n / $i + $i;
echo ($j * $j != $n) ? $sum : $sum - $j;

게시글 목록

번호 제목
6161
6160
6151
6150
6149
6144
6138
6137
6125
6107
6105
6099
6098
6093
6078
6061
6060
6059
6055
6048
6036
6014
6005
6002
5988
5986
5955
5937
5932
5923