소인수 분해 알고리즘


소인수 분해 알고리즘


C언어 알고리즘 중에 소인수 분해 알고리즘 문제를 봤다.

과정은 간단하다 변수를 생성하고 사용자 임의로 입력을 받아서 반복문을 돌려주고 구하면 된다.

문제 : 임의의 자연수 N을 입력받아서 N을 소인수 분해 한 결과를 출력하여라.


input : 18


output : 2 * 3 * 3


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main()
{
    int number, i;
    scanf_s("%d"&number);
    for (i = 2; i <= number; i++)
        while (number % i == 0)
        {
            number /= i;
            printf("%d * ", i);
        }
    return 0;
}
cs

먼저 임의의 자연수를 받을 N 변수를 만들어주고 for를 돌릴 변수 i 변수를 선언해준다.
scanf_s로 자연수를 받아들이고 for문을 보면 i값을 2로 초기화 시켯다. 그 이유는 밑에 while문 때문이다.
while문을 보면 number % i로 나눴을때 나머지가 0이면 실행되게끔 했다.
number 에 몫을 저장하고 i 변수를 출력한다. (이때 i는 소수를 출력한다.)
그리고 다시 한번 더 조건에 만족하면 계속 반복을 한다.

C언어 소인수 분해 알고리즘 정말 쉽다 조금만 생각하면 된다.

댓글

Designed by JB FACTORY