소수 출력 프로그램을 만들자.


문제

2부터 입력한 수까지의 모든 소수를 출력합니다.

단, 한 줄에 5개씩 5칸 간격으로 출력합니다.


풀이과정:

먼저 숫자 하나를 넣었을 때에 소수를 찾는 코드를 작성한다.

int main(void){

    int number = 13;
// 소수인지 알고 싶은 숫자 설정
    int count = 0;
		for (int i = 2; i < number; i++) {
    // i는 2부터 number사이의 숫자들
			if (j % i == 0) {
				count++;
        // 2부터 number사이의 숫자로 number가 나누어진다면 count에 1을 추가
        // 
			}
		}

    if(count == 0){
      printf("%d", number);
      //count가 0이면 자신보다 작은 숫자로 나누어진적이 없으므로 소수. 
      //소수를 출력한다.
    }
}

넣은 숫자 아래의 수들을 모두 대입한다.

이를 위해 중첩 반복문을 사용한다.

int main(void) {

	int number;
	int count = 0;
	int count_five = 0;
  // 소수가 5번 출력될때 마다 다음 줄로 이동
	printf("2 이상의 정수를 입력하세요 :");
	
	scanf("%d", &number);

	for (int j = 2; j <= number; j++) {
  //j는 number이하의 숫자들로, 소수인지 판단 대상
		for (int i = 2; i < j; i++) {
    //i는 j보다 작은 숫자들
			if (j % i == 0) {
				count++;
			}
		}

		if (count == 0 && j < 10) {
			printf(" %d  ", j);
      //한자리 수는 오른쪽 정렬을 위해 한칸 띄어줌
			count_five++;
      //소수 한개가 나올때마다 count_five에 1씩 추가
			if (count_five % 5 == 0) {
      //count_five가 5의 배수가 될때마다 한줄씩 띄어줌
				printf("\n");
			}
		}

		if (count == 0 && j >= 10) {
			printf("%d  ", j);
			count_five++;
			if (count_five % 5 == 0) {
				printf("\n");
			}
		}

		count = 0;
    //count를 0으로 초기화해 재사용
	}

	return 0;
}

Tags:

Updated: