int prime (int poss_prime);
int main() {
int poss_prime;
for (poss_prime = 2; poss_prime <= MAX_INT; poss_prime++) {
if (prime (poss_prime)) {
printf("%d ", poss_prime);
}
}
printf("\n\n");
return 0;
}
int prime (int poss_prime) {
int poss_factor;
for (poss_factor = 2; poss_factor <= poss_prime/2; poss_factor++) {
if (poss_prime % poss_factor == 0) {
return 0;
}
}
return 1;
}
if 문에서 조건으로 함수를 사용할 수있는 이유와 for 루프 조건에서 poss_prime을 2로 나누는 이유를 이해할 수 없습니다. . 고맙습니다.이 소수 코드 생성 코드가 어떻게 작동하는지 설명하십시오. (C에서)
2로 나누는 것은 구현자가 실제로 무엇을했는지 이해하지 못했거나 'sqrt'비용이 너무 많이들 것이라고 생각했다는 것을 의미합니다. – dmckee
@dmckee뿐만 아니라'sqrt (n)'은 O (sqrt (n))보다 더 복잡합니다. 'sqrt (int n) {int c = 1; (c * c <= n) ++ c; return c-1;}'과 같이 구현 한 경우에도 sqrt를 사용하는 버전이 반으로 나뉜다. . –