국비교육/국비교육 복습

Day05_loop_Test09 : 소수 판정 프로그램 (for 반복문의 활용 - count) (★)

Luver Duck 2022. 8. 6. 22:26

(Q) 소수 판정 프로그램
소수는 1과 자기 자신만을 약수로 갖는 숫자를 말합니다 (ex : 2, 3, 5, 7, 11, 13, 17, 19, ...)

사용자가 입력한 숫자의 약수의 갯수와 소수인지를 판별하는 프로그램을 구현하세요

 

** 핵심

- 무엇을 카운트할 것인지를 잘 생각해야 한다

- 반복문을 통해 카운트해야 할 것은 약수의 갯수이다

- 어떤 수의 약수의 갯수가 2개이면 그 수는 소수이다

- 어떤 정수 a를 b로 나눈 나머지가 0이라면 a는 b의 배수이다 =  b는 a의 약수가 된다

 

package day05;

import java.util.Scanner;

public class Day05_loop_Test09 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int input = sc.nextInt();
		
		int aliquotCount = 0;
		for(int i = 1 ; i <= input ; i ++) {
			if(input % i == 0) {
				aliquotCount++;
				System.out.println(input + "의 약수는 " + i + " 입니다");
			}
		}
		
		if(aliquotCount == 2) {
			System.out.println(input + "의 약수의 갯수는 " + aliquotCount + "개 입니다");
			System.out.println(input + "은 소수입니다");
		}
		else {
			System.out.println(input + "의 약수의 갯수는 " + aliquotCount + "개 입니다");
			System.out.println(input + "은 소수가 아닙니다");
		}
	}
}

 

- 반복수 i의 범위를 1부터 자기 자신(input)까지로 설정한다

- 입력한 수(input)을 1부터 자기 자신(input)까지 나누는 행위를 반복한다

- 입력한 수(input)이 어떠한 반복수 i에서 나누어 떨어질 때 약수 카운트(aliquotCount)를 +1 한다

   + 나누어 떨어진 반복수를 출력하면 소인수 분해를 구현할 할 수 있다

- 만약 약수 카운트(aliquotCount)가 2라면 '소수입니다'를 출력한다