본문 바로가기

IT개념/정보처리산업기사

[정처산기] 알고리즘 - 약수 구하기

728x90

특정 자연수의 약수와 그 약수의 합을 구하시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static void main(String[] args) {
 
        int a[] = new int[100];
        int b;
        int d = 0;
        int f = 0;
 
        Scanner scan = new Scanner(System.in);
        b = scan.nextInt();
 
        for (int c = 1; c <= b; c++) {
            if (b % c == 0) {
                a[d] = c;
                d = d + 1;
            }
 
        }
        for (int i = 0; i<d; i++) {
        System.out.println(a[i]);
        f = f + a[i];
        }
        System.out.println("약수의 합 : " + f);
 
        scan.close();
 
    }
cs

 

 

코드 분석

3~6번 줄 : 변수 생성

 

a : 약수를 담을 배열,

b : 약수를 구할 입력 값

d : a배열에 변수의 위치를 담을 값

f : 약수의 합을 표현할 값

 

8~9번 줄 : 변숫값 입력받기

 

11~14번 줄 : 인자 c로 반복문 생성하여 자연수 b까지 나눗셈을 해줌

만약 b가 c로 나누어져 나머지가 0이 남으면 c를 약수로 판단하여 a[d] 배열에 저장하고 d 값을 1 증가시킴

 

18~22번 줄 : 인자 i로 반복문 생성하여 증가한 d값까지 반복해줌

a[i]로 약수 출력 후

약수의 합을 저장할 변수 f에 누적연산해주고 출력

 

 

출력 값