while (1): study();
소수 계산 프로그램 본문
728x90
키보드로 양수를 입력한 후에 입력한 수까지의 모든 소수를 출력합니다. 2부터 한 줄에 5개씩 출력하며 소수가 아닌 수는 X를 출력합니다. 입력한 수에 따라 적절한 크기의 배열을 동적 할당하여 사용합니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int is_prime_number(int);
void print_2darray(int**);
int main(void)
{
int end;
int flg;
int i;
char value[80]; // 동적할당용 임시 버퍼
printf("정수 입력 : ");
scanf("%d", &end);
char** nums = (char**)calloc(end - 2, sizeof(char*));
if (nums == NULL)
{
printf("allocation failed");
return 1;
}
for (i = 2; i < end; i++)
{
flg = is_prime_number(i);
if (flg == 1)
{
sprintf(value, "%d", i);
}
else
{
strcpy(value, "X");
}
nums[i - 2] = (char*)malloc(strlen(value) + 1);
strcpy(nums[i - 2], value);
}
print_2darray(nums);
for (i = 2; i < end; i++)
{
free(nums[i - 2]);
}
free(nums);
return 0;
}
int is_prime_number(int num)
{
int flg = 1;
for (int i = 2; i < num; i++)
{
if (num % i == 0)
{
flg = 0;
break;
}
}
return flg;
}
void print_2darray(char** ary)
{
int col = 0;
while (*ary != "\0")
{
printf("%s ", *ary++);
if (++col == 5)
{
printf("\n");
col = 0;
continue;
}
}
}
728x90
'학습 > C, C++' 카테고리의 다른 글
단어 검출 프로그램 (0) | 2021.12.16 |
---|---|
성적 처리 프로그램 (0) | 2021.12.14 |
프로필 교환 프로그램 (0) | 2021.12.12 |
[C언어]특별한 포인터 (0) | 2021.12.11 |
가로 세로의 합 구하기 (0) | 2021.12.09 |