[programmers][알고리즘][level1] 약수의 합
어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다.
#include<iostream>
using namespace std;
int sumDivisor(int n)
{
if ( n <= 0 ) return 0;
int sum = 0;
for ( int i = 1; i <= n; i++ )
{
int result = n % i;
if ( result == 0 ) sum += i;
}
return sum;
}
int main()
{
int testCase = 10;
int testAnswer = sumDivisor(testCase);
cout<<testAnswer;
}
curookie 님의 풀이
#include<iostream>
#include<cmath>
using namespace std;
int sumDivisor(int n)
{
int sum = 0;
for(int i=1; i<=sqrt(n); i++) if(n%i==0) { sum += i; if(n!=i*i) sum += n/i; }
return sum;
}
int main()
{
int testCase = 12;
int testAnswer = sumDivisor(testCase);
cout<<testAnswer;
}