본문 바로가기

C\C++

소수 구하기

개요

입력받은 수까지 모든 소수를 구하고 출력하라.

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