소인수 분해 알고리즘
- 프로그래밍/C/C++
- 2018. 6. 29.
소인수 분해 알고리즘
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언어 소인수 분해 알고리즘 정말 쉽다 조금만 생각하면 된다.