int prime_number(int number) { int i; for(i = 2; i < number; i++) { if(number % i == 0)break; } if(i == number)return 1; else return 0; } void main() { int cnt = 0, su, sosu = 2; back: printf("구하고자 하는 소수의 갯수를 입력해 주세요 : "); scanf("%d", &su); if(su < 1) { printf("입력값이 잘못되었습니다. 다시 입력해 주세요!\n\n"); goto back; } while(cnt < su) { if(prime_number(sosu) == 1) { cnt++; printf("%d\t", sosu); } sosu++; } printf("\n"); }
소수를 구하는 함수의 구현은 비교적 간단하다. 소수를 판별하기 위해서 자기 자신과 1외에 다른 수로는 나누어 떨어지는가를 확인하면 된다.
2부터 매개변수로 넘어온 값까지 나누어 떨어지는지 확인 후 소수이면 즉 나누어 떨어지는 숫자가 없었다면 1을 반환하고 나누어 떨어지는 숫자가 있었다면 0을 리턴하면 된다.
main에서는 출력하고자 하는 갯수를 입력받은 후 오류여부를 검사한다. 오류가 없다면 입력받은 갯수만큼 소수를 찾는 무한루프[while(cnt < su)]를 만들고 소수를 판별하는 함수에 2,3,4~~~N을 차례대로 넣어 반환값을 확인한다.
아직까지 그리 어렵지 않으므로 더 자세한 설명은 줄이도록 하겠다.