이 글에서는 사용자가 입력한 숫자의 약수(인수)를 화면에 표시하는 C# 프로그램을 만드는 방법을 알아봅니다. 어떤 수의 약수란 그 수를 나누어 떨어지게 하는 모든 정수를 의미합니다. 예를 들어 12의 약수는 1, 2, 3, 4, 6, 12입니다.
1단계: 숫자 입력받기
가장 먼저, 약수를 구하고 싶은 숫자를 사용자로부터 입력받습니다. Console.ReadLine()으로 문자열을 읽어온 뒤, int.Parse()를 사용해 정수형으로 변환합니다.
Console.WriteLine("Enter the Number:");
n = int.Parse(Console.ReadLine());2단계: 반복문으로 약수 찾기
다음으로, 1부터 입력받은 숫자 n까지 반복하면서 각 숫자 i가 n을 나누어 떨어지게 하는지 확인합니다. 나머지 연산자 %를 활용해 n % i == 0이 참인 경우 i는 n의 약수이므로 출력합니다.
for (i = 1; i <= n; i++) {
if (n % i == 0) {
Console.WriteLine(i);
}
}전체 예제 코드
아래는 위의 두 단계를 하나로 합친 완성된 C# 프로그램입니다. 실행하면 숫자를 입력하라는 메시지가 표시되고, 입력한 값의 모든 약수가 차례대로 출력됩니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo {
class ApplicationOne {
static void Main(string[] args) {
int n, i;
// 숫자 입력 받기
Console.WriteLine("Enter the Number:");
n = int.Parse(Console.ReadLine());
// 약수 출력
Console.WriteLine("Factors:");
for (i = 1; i <= n; i++) {
if (n % i == 0) {
Console.WriteLine(i);
}
}
Console.ReadLine();
}
}
}실행 결과 예시
입력값으로 12를 넣으면 다음과 같이 출력됩니다.
Enter the Number: 12 Factors: 1 2 3 4 6 12
동작 원리 요약
int.Parse(Console.ReadLine()): 콘솔에서 입력받은 문자열을 정수로 변환합니다.for반복문: 1부터 n까지 모든 후보 값을 하나씩 검사합니다.n % i == 0: 나눗셈의 나머지가 0이면 i는 n의 약수입니다.
참고로 이 방식은 시간 복잡도가 O(n)입니다. 더 큰 숫자를 다룰 때는 √n까지만 검사하고 짝을 함께 추가하는 방법으로 성능을 개선할 수 있습니다.