약수의 합

_021119·2021년 4월 13일
0

알고리즘

목록 보기
9/9

tip!

어떤 자연수의 약수들을 구할 때, 1부터 그 절반 값까지만 나누어 보면 자신을 제외한 모든 약수를 구할 수 있다.

example)

12의 약수 : 1 2 3 4 6 12
12/2 = 6

28의 약수 : 1 2 4 7 14 28
28/2 = 14

[내가 푼 방식]

자연수 n은 0부터 3000까지의 숫자 이고 n/2로 나눈 값 까지만 점검을 해줘도 약수를 구할 수 있다.

반복문을 사용하여 자연수 n 을 나눴을 때 나머지가 0이 되게 하는 자연수 j값을 찾는다.

합을 구해야 하기 때문에 sum  변수를 만들어 저장한다.

return 할 때에는 자연수 n 본인도 합해줘야하기 때문에, (n/2 까지 약수 값의 합+ 자기자신) 을 return해준다.

class Solution {
  public int solution(int n) {
		int sum = 0;
		int half = 0;

		if(n>=0 & n<=3000) {
			half = n/2;
        	}
		for(int j = 1; j <= half; j++) {
			int num = n%j;
			if(num==0) {
			sum = sum + j;
			}
		}
		return sum + n;
	}
  }

다른사람의 풀이 참고!

class SumDivisor {
    public int sumDivisor(int num) {
        int answer = 0;
            for(int i = 1; i <= num/2; i++){
        if(num%i == 0) answer += i;
      }
        return answer+num;
    }
profile
내가 정리하고 싶어서 쓰는 로오그

0개의 댓글