정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
-> 처음에 접근을 어떻게 시작해야할지 아이디어가 떠오르지 않아서 나 자신이 직접 소인수분해를 할 때 어떻게 하는지 생각을 해보았다!
내가 직접 소인수분해를 할 때는 2,3,5 같은 숫자들 중에 될 것 같은 것들을 골라 나눗셈을 시도하였다. 그래서 c언어로 이것을 비슷하게 어떻게 풀까 생각을 하니 간단하게 반복문을 통해서 2부터 (1은 어짜피 다 나누어지니까)시작해 N까지 반복을 하게 만들었다. 반복은 N만큼 하게 하였지만 과정 속에서 변수 N의 값이 줄어들게 만들었고 만약에 나누어진다면 다시 i를 2부터 시작할 수 있도록 하였다!
for (int i = 2; i <= N; i++)
{
if (N % i == 0)
{
printf("%d\n", i);
N = N / i;
i = 1;
}
}
틀리지않고 1번에 통과!
처음에 코드를 어떻게 짜야할지 몰라서 막연하긴 했는데 내가 직접 하는 수학적 과정을 C언어(컴퓨터 언어)로 어떻게 풀어내야하는지 고민을 하다보니 조금 감이왔다! 언어 공부를 열심히 해서 내가 생각하는 흐름?을 컴퓨터 언어로 잘 풀어낼 수 있어야겠다는 것을 느꼈다!
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int N;
scanf("%d", &N);
for (int i = 2; i <= N; i++)
{
if (N % i == 0)
{
printf("%d\n", i);
N = N / i;
i = 1;
}
}
}