입력이 최대 1000000000이 될 수 있다는 점을 감안할 때 더 많은 시간과 메모리 효율적인 프로그램을 어떻게 작성할 수 있습니까? (m과 n 사이의 모든 소수 인쇄)

curious_coder17

다음은 아래 코드입니다 (CP qs에 해당)

실행 시간 제한은 6 초이지만 내 코드가 더 느립니다.

더 많은 메모리와 시간을 효율적으로 만들 수있는 방법은 무엇입니까?

  • 입력 : 입력은 한 줄의 테스트 케이스 t시작 합니다 ( t <= 10 ).

  • 다음 t각각 에는 공백으로 구분 된 두 개의 숫자 mn ( 1 <= m <= n <= 1000000000 , nm <= 100000 )이 있습니다.

  • 출력 : 모든 테스트 케이스에 대해 m <= p <= n , 한 줄에 하나의 숫자, 빈 줄로 구분 된 테스트 케이스가 되도록 모든 소수 p를 인쇄합니다 .

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    long int t,m,n,i,j,k;
    //printf("Enter number of testcases:\n");
    scanf("%ld",&t);
    long int test[t][2];
    for(i=0;i<t;i++){
        //printf("Enter m,n:\n");
        scanf("%ld %ld",&test[i][0],&test[i][1]);
    }
    
    for(k=0;k<t;k++){    
        for(i=test[k][0];i<=test[k][1];i++){
            for(j=2;j*j<i*i;j++){
                if(i%j==0)
                    break;
            }
            if(j==i){
                printf("%ld\n",i);
                }
            }
            printf("\n");
    }
    return 0;
}
윌 네스

Eratosthenes의 오프셋 체를 사용하십시오 ( 이 답변 참조 , 의사 코드, 두 링크 모두 저에 의한 SO 답변에 대한 것입니다).

입력에 따라 하나의 세그먼트에서만 작동하도록 수정 된 에라토스테네스 세그먼트 화 된 체입니다.

차이는이 점이다 분단 현재 (최대 체로되는 세그먼트에 의해 필요에 따라 소수의 많은 같은 불명확 세그먼트 사용하여 진행 자체 상부 한계의 제곱근); 여기에서 최상위 세그먼트의 한계 (따라서 핵심 세그먼트의 한계)가 사전에 알려져 있습니다.

핵심 세그먼트는 sqrt고려할 가장 큰 가치 까지 확장 됩니다. 여기에서는 10^9. sqrt(10^9) < 32000, 따라서 코어 세그먼트는 0에서 32000에 걸쳐 있으며 간단한 에라토스테네스 체로 걸러집니다.

여러 번 실행되었으므로 각 실행에 동일한 코어를 사용하십시오.

연결된 답변의 코드는이 질문의 요구 사항에 맞게 쉽게 수정할 수 있습니다. top을 추정하는 대신 입력에 제공된를 사용하십시오 n. 여기 above에서 부르는 m것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

TOP 리스트

  1. 1

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  2. 2

    Matlab의 반복 Sortino 비율

  3. 3

    Python의 csv 파일에서 첫 번째 열 삭제

  4. 4

    개체 참조가 개체의 인스턴스로 설정되지 않았습니까? (예외 오류 ~ ASP.NET MVC)

  5. 5

    atob은 인코딩 된 base64 문자열을 디코딩하지 않습니다.

  6. 6

    EventEmitter <string>의 컨텍스트 'this'가 Observable <string> 유형의 'this'메서드에 할당되지 않았습니다.

  7. 7

    병합 셀을 사용하여 워크 시트의 데이터 필터링

  8. 8

    PhpStorm 중단 점에서 변수 값을 볼 수 없습니다.

  9. 9

    jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까?

  10. 10

    `@ Transactional`이 있음에도 불구하고 이러한 데이터베이스 수정 사항이 롤백되지 않는 이유는 무엇입니까?

  11. 11

    ssh를 사용하여 원격에서 로컬로 파일 복사

  12. 12

    종속 사용자 정의 Lightning 선택 목록 Level2 및 Level3을 설정한 다음 Lightning 구성 요소에서 Level2를 재설정하지만 Level2 캐시 데이터가 저장됨

  13. 13

    2 개의 이미지를 단일 평면 이미지로 결합

  14. 14

    팝업처럼 위젯을 표시하는 방법

  15. 15

    [해결] 쿠키 설정 SameSite = Chrome / JSP, JAVASCRIPT에서 작동하지 않습니다.

  16. 16

    버튼 클릭을 기반으로 특정 CSS 클래스를 추가하는 방법은 무엇입니까?

  17. 17

    React 구성 요소가 자동으로 초기 상태로 다시 렌더링됩니다.

  18. 18

    연결된 서버 쿼리는 작동하지만 동일한 OPENQUERY는 "sys.servers에서 서버 'SERVER'를 찾을 수 없습니다.

  19. 19

    파일 2의 파일 1에서 동일한 줄을 조건으로 바꿉니다.

  20. 20

    아이디어 Intellij : 종속성 org.json : json : 20180813을 찾을 수 없음, maven에서 org.json 라이브러리를 가져올 수 없음

  21. 21

    상황에 맞는 메뉴 색상

뜨겁다태그

보관