10개의 소수 구하는 프로그램 질문

#includestdio.h

int main(void)
{
int i,j;
int count=0;

for(i=1; i=30; i++)
{
for(j=1; j=i; j++)
{
if(i%j==0)
{
count++;
}
}
if(count==2)
printf(%d \t, i);

count=0;
}
}

위 프로그램은 10개의 소수를 구하는 프로그램입니다.
문법 구조는 알겠는데 어떠한 방법으로 소수가 구해지는지를 모르겠네요.
(제가 짠 프로그램이 아닙니다.)

count를 증가 시키는?시키는데 왜 count가 2일 때 왜 2와 비교를 하는지 모르곘습니다.

설명좀 부탁드립니다.

댓글 3

  • 노을 2025.12.25

    예를 들면... 1로 나누면 나머지가 0인 건 확실하므로 j가 1부터 루프를 시작할 필요가 없구요(그럼 count가 1인지만 비교하면 되겠죠).
    2로 나누어서 나머지가 0이 아니라면 짝수는 아니므로 3부터는 루프를 j+=2씩 올리면 실행 시간을 절반으로 줄일 수 있겠죠.
    그리고 위 소스에서 count를 쓸 필요도 없이 count가 2를 넘어가면 소수가 아니므로 그냥 거기서 for문을 break 시키는게 더 효율적입니다.
    마지막으로 j = i 인 동안 f

  • 큰돌찬 2025.12.25

    흠.... 저는 어떻게 되는지는 알겠는데 아직 효율적인것과 비효율적인것은 잘모르겠네요 ㅎㅎ

  • 아빠몬 2025.12.25

    1과 자신 외에는 약수가 없는게 소수이므로 약수가 두 개인 것만 출력하는군요. 꽤 비효율적입니다 -_-;

프로그램 개발일반 다른 글

목록