페르마의 크리스마스 정리

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

요약
각 구간에 있는 소수의 개수와 그중 두 제곱수의 합으로 나타낼 수 있는 소수의 개수를 구한다.
난이도

보통10점 중 4점

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

문제

1640년 12월 25일, 위대한 수학자 피에르 드 페르마는 마랭 메르센에게 다음과 같은 편지를 보냈다.

홀수인 소수 pp가 p=a2+b2p = a^2 + b^2 꼴로 표현되는 것은, pp가 p=4c+1p = 4c + 1 꼴로 표현될 때와 정확히 같다는 사실을 방금 증명했습니다.

편지에는 증명이 담겨 있지 않았고, 100년 뒤에 오일러가 이를 증명했다. 실제로 5, 13, 17, 415,\ 13,\ 17,\ 41은 두 제곱수의 합으로 나타낼 수 있다.

5=22+1213=32+2217=42+1241=52+425 = 2^2 + 1^2 \qquad 13 = 3^2 + 2^2 \qquad 17 = 4^2 + 1^2 \qquad 41 = 5^2 + 4^2

반면 11, 19, 23, 3111,\ 19,\ 23,\ 31은 두 제곱수의 합으로 나타낼 수 없다.

여기서 두 제곱수는 음이 아닌 정수의 제곱을 뜻하며, 소수 2=12+122 = 1^2 + 1^2 역시 두 제곱수의 합으로 나타낼 수 있다.

구간 [L,U][L, U]가 주어졌을 때, 이 구간에 속한 소수 중에서 두 제곱수의 합으로 나타낼 수 있는 것이 몇 개인지 세는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어지며, 두 정수 LL과 UU가 공백으로 구분되어 주어진다. (−1,000,000<L≤U<1,000,000-1{,}000{,}000 < L \le U < 1{,}000{,}000)

입력의 마지막 줄에는 LL과 UU가 모두 −1-1로 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 한 줄에 네 정수 LL, UU, xx, yy를 공백으로 구분하여 출력한다. LL과 UU는 입력으로 주어진 값이고, xx는 구간 [L,U][L, U]에 속한 소수의 개수, yy는 그 소수 중 두 제곱수의 합으로 나타낼 수 있는 것의 개수이다.

예제3

  1. 예제 1

    입력
    10 20
    11 19
    100 1000
    -1 -1
    
    예상 출력
    10 20 4 2
    11 19 4 2
    100 1000 143 69
    
  2. 예제 2

    입력
    2 2
    -1 -1
    
    예상 출력
    2 2 1 1
    
  3. 예제 3

    입력
    3 3
    -1 -1
    
    예상 출력
    3 3 1 0