c 언어 배열을 이용한 소수 출력 프로그램 수정 입니다,
조회수 2531회
밑에 코드를 이용하여 1 부터 100000 까지의 숫자중에 소수를 찾아서 마지막 다섯숫자 99929, 99961, 99971, 99989, 99991 을 출력하고 싶습니다.
'''코드'''
void demo_array_3() {
int big_boolean_array[100000];
int num_elements = sizeof(big_boolean_array) / sizeof(big_boolean_array[0]);
for (int i = 0; i < num_elements; i++) {
big_boolean_array[i] = TRUE;
}
printf("big_boolean_array initialized.\n");
}
int main(void) {
demo_array_3();
return 0;
}
'''코드'''
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
#include <stdio.h> int main(void) { int i, j, count = 0; int numb[100001] = { 0 }; for (i = 2; i <= 100000; i++) { if (numb[i] == 0) { for (j = 2; i * j <= 100000; j++) numb[i*j] = 1; } } for (i = 100000; i >= 2; i--) { if (numb[i] == 0) { printf("%d\n", i); count++; if (count == 5) break; } } return 0; }
'에라토스테네스의 체'를 검색해보세요. 딱히 배열을 초기화 할 필요도 없습니다. 그냥 (배열의 인덱스 i) == (정수 n)이라고 생각하시면 편합니다. 소수 인덱스의 배열 값은 0으로 저장되어있습니다. 따라서 100000부터 1씩 내려오면서 배열의 값이 0인 인덱스만 5개 뽑아오면 됩니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
-
for (int i=0; i<num_elements;i++) if(is_prime_number(i+1)==true) big_boolean_array[i]=false;
int counts=0;
for(i=num_element;i>=0,counts<5;i--) if(big_boolean_array[i]==false) {print (i) count++;}
댓글 입력