728x90
continue와 break문을 배우는 도중 예시 코드를 보고 있는데,
이걸로 소수를 출력할 수 있지 않을까 싶었다.
그래서 강의를 멈추고 소수를 출력하는 코드를 만들어 봤다.
로직은 간단하다.
1. num에 숫자를 넣어 소수가 되는 것만 bottle에 담는다.
2. 출력한다.
좀 자세히 쓰면
1) bottle[0]에 제일 작은 소수 2를 담는다.
2) 2가 이미 bottle에 담겨있기 때문에 num은 3부터 시작한다.
3) while문을 이용해 num을 bottle 안에 있는 소수들로 한 번씩 나눠본다.
4) 나눠지면 소수가 아니므로 함수를 탈출하고 num++;
5) 안 나눠지면 num = 소수이다, bottle의 끝자락에 bottle[i]가 위치하게 되고, num출력과 bottle[i]에 num담기
#include <stdio.h>
int main(void)
{
int num = 3;
int bottle[1000] = {0,};
int i = 0;
bottle[0] = 2;
printf("%d \n", bottle[0]);
while (num < 100)
{
while(bottle[i] != 0)
{
if(num % bottle[i] == 0)
{
i++;
break;
}
i++;
}
if(num % bottle[i-1] != 0)
{
printf("%d \n", num);
bottle[i] = num;
}
num++;
i = 0;
}
return(0);
}
나는 while문 안에서 소수로 확정된 num을 바로 출력했지만
bottle에 소수가 담기기 때문에 다 끝나고 bottle을 출력해도 된다.
그리고 bottle과 num에 제약을 줬는데 원하는 조건에 맞춰서 하면 된다.
끝없이 계속 구하고 싶다면 malloc을 이용해서 크기를 지정해도 되고,
while문 조건을 i로 주어도 된다.
출력물
조건을 조금 바꾸어서 출력 시 줄넘김이 아니라 쉼표로 구분자를 주었고
i가 1000으로 bottle이 꽉 차면 break하게 해서 출력해 보았다.
생각보다 소수가 많다.
대략 8천까지 중에 1천 개가 있으니, 8개 중에 1개가 소수다.
-끝-
728x90
'코딩 > C, C++' 카테고리의 다른 글
C언어) quick sort (0) | 2021.06.23 |
---|---|
C언어) 구구단 출력하기 | 특정 조건 출력하기, 짝(홀)수 단만 출력하기, 짝(홀)수 번째만 출력하기 (0) | 2020.10.04 |