http://euler.synap.co.kr/prob_detail.php?id=21
추가 조건 : d(a)=a 처럼 a=b일 경우는 친화수(우애수)가 아닙니다.
Skillist 코드---------------------------------------------------------------------------------
public static void main(String[] args){
int totalsum=0;
for(int i=3;i<=10000;i++){
int temp = Calsum(i);
if(temp<=10000){
if(Calsum(temp) == i && temp != i){
totalsum += i;
}
}
}
System.out.println(totalsum);
}
public static int Calsum(int i){
int sum = 1;
int number = i;
for(int j=2; j < i;j++){
if(number%j==0){
i = (number/j);
sum = sum + j + i;
}
}
return sum;
}
다시 공부------------------------------------------------------------------
//제곱수일 경우 그에대한 약수 합 계산을 올바르게 수행.
//i=1일 경우 0으로 세팅
public static void main(String[] arg){
int sum=0;
for(int i=2; i<=10000;i++){
int first = cal(i);
if(first<=10000 && i==cal(first) && i!=first){
sum += i;
}
}
System.out.println(sum);
}
public static int cal(int n){
int temp = n;
int sum;
if(n==1){
sum=0;
}else{
sum=1;
for(int i=2; i<temp;i++){
if(n%i==0){
sum+=i;
if(n!=i*i){
sum+=(n/i);
}
temp =n/i;
}
}
}
return sum;
}
'코딩 테스트 > Project Euler @ kr' 카테고리의 다른 글
23) 두 초과수의 합으로 나타낼 수 없는 모든 양의 정수의 합은? (0) | 2017.02.17 |
---|---|
22) 영문 이름 점수 합계 구하기 (0) | 2017.02.17 |
20) 100! 의 자리수를 모두 더하면? (0) | 2017.02.16 |
19) 20세기에서, 매월 1일이 일요일인 경우는 몇 번? (0) | 2017.02.16 |
67) 삼각형에서 경로의 합 중 최대값을 구하는 효율적인 방법은? (0) | 2017.02.16 |