혼자 공부하는 C언어 6챕터 도전실전예제
소수 출력 프로그램을 만들자.
문제
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;
}