#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와 비교를 하는지 모르곘습니다.
설명좀 부탁드립니다.
노을 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과 자신 외에는 약수가 없는게 소수이므로 약수가 두 개인 것만 출력하는군요. 꽤 비효율적입니다 -_-;