c 언어 배열을 이용한 소수 출력 프로그램 수정 입니다,

조회수 2528회

밑에 코드를 이용하여 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++;}

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)