약수(Factor)란 무엇인가?
이 글에서는 Java를 사용하여 특정 숫자의 약수를 구하고 화면에 출력하는 방법을 알아보겠습니다. 약수(factor)란 어떤 수나 식을 나머지 없이 정확하게 나누는 수를 의미합니다.
쉽게 말해, 약수는 다른 수를 만들기 위해 곱하는 숫자들입니다. 예를 들어 3과 5를 곱하면 15가 되는데, 이때 3과 5는 15의 약수라고 합니다. 또 다른 관점으로 보면, 약수는 해당 숫자를 나눴을 때 나머지가 전혀 남지 않는 수입니다. 실제로 1, 2, 3, 4, 6, 12는 모두 12를 나머지 없이 나눌 수 있기 때문에 12의 약수입니다.
가장 큰 약수와 가장 작은 약수
모든 숫자에는 가장 큰 약수와 가장 작은 약수가 존재합니다.
- 어떤 숫자의 가장 큰 약수는 그 숫자 자신입니다.
- 어떤 숫자의 가장 작은 약수는 항상 1입니다.
즉, 1은 모든 수의 약수입니다. 예를 들어 12의 경우, 가장 큰 약수는 12이고 가장 작은 약수는 1입니다.
실행 결과 미리보기
입력
입력값 : 45
출력
45의 약수는: 1 3 5 9 15 45
알고리즘
1단계 - 시작(START) 2단계 - my_input과 i라는 두 개의 정수 변수를 선언한다 3단계 - 사용자로부터 필요한 값을 입력받거나 값을 직접 정의한다 4단계 - for 반복문을 사용하여 1부터 my_input까지 반복하면서, my_input을 i로 나눈 나머지가 0인지 확인한다. 나머지가 0이라면 i는 약수이므로 결과에 저장한다 5단계 - 결과를 출력한다 6단계 - 종료(STOP)
예제 1: 사용자로부터 입력받는 경우
아래 예제에서는 프롬프트를 통해 사용자가 직접 숫자를 입력합니다. 온라인 코딩 도구에서 이 예제를 직접 실행해 볼 수도 있습니다.
import java.util.Scanner;
public class Factors {
public static void main(String[] args) {
int my_input, i;
System.out.println("Required packages have been imported");
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined ");
System.out.print("Enter the number : ");
my_input = my_scanner.nextInt();
System.out.print("The factors of " + my_input + " are: ");
for (i = 1; i <= my_input; ++i) {
if (my_input % i == 0) {
System.out.print(i + " ");
}
}
}
}출력 결과
Required packages have been imported A reader object has been defined Enter the number : 45 The factors of 45 are: 1 3 5 9 15 45
예제 2: 값이 미리 정의된 경우
아래 예제에서는 정수 값이 코드 안에 미리 정의되어 있으며, 해당 값에 대한 약수를 계산하여 콘솔에 바로 출력합니다.
import java.util.Scanner;
public class Factors {
public static void main(String[] args) {
int my_input, i;
my_input = 45;
System.out.println("The number is defined as " +my_input);
System.out.print("The factors of " + my_input + " are: ");
for (i = 1; i <= my_input; ++i) {
if (my_input % i == 0) {
System.out.print(i + " ");
}
}
}
}출력 결과
The number is defined as 45 The factors of 45 are: 1 3 5 9 15 45
핵심 정리
약수를 구하는 원리는 매우 간단합니다. 1부터 해당 숫자까지 차례대로 반복하면서 나눗셈의 나머지(모듈로 연산자 %)가 0이 되는지 확인하면 됩니다. 나머지가 0이라면 그 숫자는 약수입니다. 이 방식은 시간 복잡도가 O(n)으로 직관적이며, 초보자가 반복문과 조건문의 개념을 익히기에 좋은 예제입니다.