본문 바로가기
프로그래밍 언어/C언어

혼자공부하는C언어_도전실전예제_Chapter16

by 엉덩이싸움 2024. 2. 12.

//소수(prime number) 계산 프로그램


#include <stdio.h>
#include <stdlib.h>

void data_print(int* pi);
void data_align(int* pi);

int num; //전역변수로 사용

int main(void)
{

printf("> 양수 입력: ");
scanf("%d", &num);

int* pi = (int*)malloc(sizeof(int) * (num - 1));

data_align(pi);
data_print(pi);
free(pi);

return 0;
}

void data_align(int* pi)
{
int i, j;
int k = 0;

if (num == 2) pi[k] = 2;
else
{
for (i = 2; i <= num; i++)
{
for (j = 2; j < i; j++)
{
if (i % j == 0) break;
}
if (i == j)
{
pi[k] = i;
}
else
{
pi[k] = 88;
}
k++;
}
}
}
void data_print(int* pi)
{
int cnt = 0;


for (int k = 0; k < (num - 1); k++)
{
if (pi[k] == 88) printf("%5c", pi[k]);
else printf("%5d", pi[k]);
cnt++;
if (cnt % 5 == 0) printf("\n");
}
}