Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#으로 입력한 숫자의 약수(인수) 구하기 – 완전 가이드

이 글에서는 사용자가 입력한 숫자의 약수(인수)를 화면에 표시하는 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까지만 검사하고 짝을 함께 추가하는 방법으로 성능을 개선할 수 있습니다.