문제
내가 작성한 코드
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int num;
scanf("%d", &num);
int count = 1;
for(int i = 2; i<=num; i++){
if(i==2){
printf("2 ");
count++;
}
else{
int state = 0;
for(int k = 2; k<i; k++){
if(i%k==0){
state = 3;
break;
}
}
if(state==0){
printf("%d ",i);
count++;
if(count %10 == 1){
count=1;
printf("\n");
}
}
}
}
return 0;
}
수를 받으면 1부터 그 수까지 가게 하면서 소수이면 출력을 하게 하는 것이었다
1은 소수가 아니니 고려하지 않고 2부터 for문을 돌리도록 해주었는데
2는 무슨 수가 들어오든 소수라고 정의되어 있으므로 무조건 출력하도록 해주었다
나머지 수들은 i에 저장해서 k로 계속 나누어가며 만약 나머지가 0이 된다면 소수가 아니고 끝까지 나누었는데 나머지가 0인 게 없었다면 소수이므로 그 여부를 state를 통해 파악하도록 해주었다
그리고 10개씩 한 줄에 출력을 해야 해서 count를 이용해 한 줄에 출력되는 소수들의 개수를 저장하도록 해주었다
'C언어 > 주차별 문제' 카테고리의 다른 글
[4주차] BMI 계산기 (0) | 2023.04.19 |
---|---|
[3주차] 특명: X를 운반하라 (0) | 2023.04.19 |
[3주차] 피라미드 (0) | 2023.04.18 |
[3주차] 윤년 (0) | 2023.04.18 |
[3주차] 팩토리얼(factorial) 수 구하기 (0) | 2023.04.18 |