[c] 중첩반복문

JISO.O·2022년 5월 11일
0

C

목록 보기
2/2
post-thumbnail

중첩 반복문을 사용하여 2부터 100까지의 소수만을 출력하는 프로그램이다

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	int i, j, count = 0;
	int prime;
	int inputNum;

	printf("2 이상 정수를 입력하세요 : ");
	scanf("%d", &inputNum);

	for (i = 2; i <= inputNum; i++)
	{
		prime = 1;
		for (j = 2; j < i; j++) {
			if (i % j == 0) {
				prime = 0;
				break;
			}
		}

		if (prime == 1) {
			printf("%d\t", i);
			count++;
			if (count == 5) {
				printf("\n");
				count = 0;
			}
		}
	}
	return 0;
}

printf("2 이상 정수를 입력하세요 : ");
scanf("%d", &inputNum);

scanf를 사용하여 소수를 출력할 숫자의 범위를 정해주는 코드이다

for (i = 2; i <= inputNum; i++)

for문을 사용하여 2부터 입력한 숫자를 반복하는 코드이다

for (j = 2; j < i; j++) {
if (i % j == 0) {
prime = 0;
break;

위의 코드에서 내려온 숫자가 소수인지 아닌지를 판단하는 코드이다

if (prime == 1) {
printf("%d\t", i);
count++;
if (count == 5) {
printf("\n");
count = 0;

위의 코드가 소수라면 그 수를 출력하고, 출력한 횟수를 count에 저장하여 한 줄에 5개의 소수가 오도록 하는 코드이다

예를 들어 i=6일 때, i % j==0이 j가 2일 때 성립하므로 prime에는 0이 저장된다. 그 다음 if문에서 prime == 1이라는 조건을 만족하지 못하므로 제일 위에 있는 for문으로 돌아가고 i는 7이 되게 된다.

i=7인 상태에서는 두번 째 for문에서 j % i == 0을 만족하는 수가 없기 때문에 prime에는 1이 저장된채로 if문으로 내려오게 된다. if(prime==1)이라는 조건을 만족하므로 7이 출력되고 count에는 1이 더해지게 된다.

이런 방식으로 2부터 입력받은 숫자 사이의 소수를 출력하게 된다.

profile
미림마이스터고등학교에서 개발을 공부중인 학생입니다!

0개의 댓글