Language/C

[ C ] [ 제어문 연습 문제 ] 1~N 사이 소수 출력 프로그램

곽수진 2021. 11. 21. 02:23
반응형
정수 N을 입력받아 1~N 사이의 소수를 모두 구해서 출력하는 프로그램을 작성해보자.
소수는 한 줄에 10개씩 출력함

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	int num;

	printf("양의 정수? ");
	scanf("%d", &num);

	int i, j;
	int prime = 0;
	int cnt = 0;

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

		if (!prime) {
			printf("%3d ", i);
			cnt++;
			if (cnt == 10) {
				cnt = 0;
				printf("\n");
			}
		}
		prime = 0;
	}
	printf("\n");
	return 0;
}

for(i = 2; i <= num; i++) : 1은 소수가 아니므로 생략하고 2부터 사용자가 입력한 양의 정수 값까지 반복문 돌림

for(j = 2; j < i;  j++) : 1보다 크고 위 반복문 숫자(i)보다 작은 수까지 반복문 돌림

if (i % j == 0) : 위 두 숫자가 나누어 떨어질 경우 1과 사용자가 입력한 양의 정수 사이의 수인 약수가 있음을 의미함

if (!prime) : 약수가 없는 경우소수

printf("%3d ", i) : 소수 값을 3자리에 맞춰 정렬하여 출력함

 

cnt == 0;
cnt ++;
if (cnt == 10){
  cnt = 0;
  printf("\n");
}

한 줄에 10개씩 출력하기 위해 초기값 0으로 지정된 cnt 변수 생성

▶ cnt 변수의 값을 하나씩 늘려가다가 10이 되면 0으로 초기화 시키고 다음 줄로 넘어감

 

 

출력 결과 모습

반응형