C/함수와 변수
C언어 - 입력받은 정수를 소인수 분해하는 프로그램
gyonggyong
2022. 11. 19. 10:36
호출할 때마다 가장 최근에 리턴한 소수 다음으로 큰 소수를 리턴하는 int getPrime(void) 함수를 작성하시오.
이 함수를 이용하여 사용자로부터 양의 정수를 입력 받아 그 소수를 소인수분해한 결과를 출력하는 프로그램을 작성하시오.
(Ex. 48 -> 2 2 2 2 3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int isPrime(int n) {
for (int i = 2; i < n; i++) {
if (n % i == 0) return 0; // n이 소수가 아니면 0 리턴
}
return 1; // n이 소수이면 1 리턴
}
int getPrime(void) {
static int num = 1;
num++;
while (isPrime(num) == 0) ++num;
return num;
}
int main(void) {
int n, i;
scanf("%d", &n); // 사용자로부터 입력 받기
for (i = getPrime(); i <= n; i++) {
while (n % i == 0) {
n = n / i;
printf("%d ", i);
}
}
return 0;
}
|
cs |