개요
입력받은 수까지 모든 소수를 구하고 출력하라. |
Code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
int* ptrPrime=NULL;
int iNum,snCnt;
printf("소수를 찾을 최대수를 입력하세요 : ");
scanf_s("%d", &iNum); //숫자 입력
//입력받은 숫자크기의 포인터 선언
ptrPrime = (int*)malloc(sizeof(int*)*iNum);
//arrary에 0~입력받은 숫자까지 입력
for (int i = 0; i <= iNum; i++) {
ptrPrime[i] = i;
}
//2부터 입력받은 숫자까지 반복
for (int i = 2; i <= iNum; i++) {
snCnt = 0; //인수의 갯수를 저장할 snCnt
//숫자를 나누어 나머지가 없으면 인수로 갯수를 카운트
for (int j = i; j >= 1; j--) {
if (ptrPrime[i] % j == 0) {
snCnt++;
}
}
//소수는 1과 자신만 인수로 가지므로 snCnt가 2를 초과하면 해당 array에 0을 입력
if (snCnt > 2) {
ptrPrime[i] = 0;
}
}
//구한 소수를 출력
for (int i = 2, cnt = 0; i <= iNum; i++) {
if (ptrPrime[i] != 0) {
printf("%4d", ptrPrime[i]);
if ((cnt + 1) % 5 == 0) {
printf("\n");
}
cnt++;
}
}
free(ptrPrime); //메모리 반환
return 0;
}
Output
'C\C++' 카테고리의 다른 글
Structure Input/Output (0) | 2022.02.22 |
---|---|
소수 구하기 2 (0) | 2022.02.18 |
Pointer & Array Ex01 (0) | 2022.02.17 |
Array & Pointer 예제 (0) | 2022.02.16 |
2D Array Sum (0) | 2022.02.14 |