만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

정민이의 수열 제조법

시간 제한1초메모리 제한1024 MB

요약
각 질문의 구간 [a, b]에 포함된 초기 정수의 개수를 구합니다. 초기 정수는 1과 N 이하의 모든 소수입니다.
난이도

보통10점 중 4점

유형
수학, 정수론, 누적 합
정답자
아직 제출이 없습니다

문제

정민이는 1부터 NN까지의 정수가 한 개씩 들어 있는 수열을 만들려고 한다. 이를 위해 최소 개수의 양의 정수가 들어 있는 수열을 준비했고, 목표를 달성할 때까지 다음 작업을 반복했다.

  • 수열에 있는 정수 하나를 제곱한 값을 수열에 추가한다.
  • 수열에 있는 정수 두 개를 곱한 값을 수열에 추가한다.

모든 작업을 마친 정민이에게 익준이가 처음에 어떤 정수들로 작업을 시작했는지 물었다. 정민이는 답을 알려주는 대신, 익준이가 aa와 bb를 물어보면 초기 정수 중 aa 이상 bb 이하인 정수의 개수를 알려 주겠다고 했다. 익준이는 질문을 총 MM번 할 것이다.

익준이의 질문에 답하자.

입력

첫 번째 줄에 정수 NN, MM이 공백으로 구분되어 주어진다. (1≤N≤50000001 \le N \le 5000000; 1≤M≤10000001 \le M \le 1000000)

두 번째 줄부터 MM개의 줄에 정수 aa, bb가 공백으로 구분되어 주어진다. (1≤a≤b≤N1 \le a \le b \le N)

출력

MM개의 줄에 각 질문의 답을 출력한다.

힌트

Python 3 사용자는 PyPy3로 제출할 것을 권장한다.

예제2

  1. 예제 1

    입력
    50 4
    1 15
    5 6
    20 40
    40 50
    
    예상 출력
    7
    1
    4
    3
    
  2. 예제 2

    입력
    5000000 5
    2 10
    2 3
    2 5000000
    3 10000
    5 5
    
    예상 출력
    4
    2
    348513
    1228
    1