#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 编程竞赛