#P3511. Fermat's Christmas Theorem

Fermat's Christmas Theorem

题目描述(Description)

1640年12月25日,伟大的数学家皮埃尔·德·费马(Pierre de Fermat)在一封写给马兰·梅森(Marin Mersenne)的信中写道:他刚刚证明了一个奇素数 $p$ 可表示为 $p = a^2 + b^2$ 当且仅当 $p$ 可表示为 $p = 4c + 1$。和往常一样,费马并没有写出证明,据我们所知他也从未写下来。直到100年后,才由欧拉(Euler)完成了该定理的证明。

例如,以下素数可以表示为两个平方数之和:

  • $5 = 2^2 + 1^2$
  • $13 = 3^2 + 2^2$
  • $17 = 4^2 + 1^2$
  • $41 = 5^2 + 4^2$

而素数 $11, 19, 23, 31$ 无法 表示为两个平方数之和。

请你编写一个程序,用于统计给定区间内:

  • 素数的总个数,
  • 其中可以表示为两个平方数之和的素数个数。

输入格式(Input)

你的程序将处理一个或多个测试用例。每个测试用例在单独的一行中,包含两个整数 $L$ 和 $U$,满足 $L \leq U < 1,000,000$。

输入以一行内容为 $-1 -1$ 的“哨兵测试用例”结束(表示输入终止,不需要处理这一行)。


输出格式(Output)

对于每个测试用例,输出格式为:

L U x y

其中:

  • $L$ 和 $U$ 为输入中给定的区间;
  • $x$ 是区间 $[L, U]$ 中的素数个数;
  • $y$ 是这些素数中可以表示为两个平方数之和的个数。

输入样例(输入数据 1)

10 20
11 19
100 1000
-1 -1

输出样例(输出数据 1)

10 20 4 2
11 19 4 2
100 1000 143 69

来源(Source)

Arab and North Africa 2007 编程竞赛