#P1305. Fermat vs. Pythagoras

    ID: 306 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>数论勾股方程Duke Internet Programming Contest 1991UVA 106

Fermat vs. Pythagoras

题目描述

计算机生成并辅助的证明与验证在计算机科学领域中占据着一个小的分支领域。四色定理的第一个证明是在计算机程序的辅助下完成的,并且当前在验证方面的努力已经成功地验证了从高级代码到芯片级的转换。

这个问题涉及到计算与费马大定理的一部分相关的量:当n>2n > 2时,方程an+bn=cna^n + b^n = c^n不存在整数解。

给定一个正整数NN,你需要编写一个程序来计算两个量,这两个量与方程x2+y2=z2x^2 + y^2 = z^2的解有关,其中xxyyzz被限制为小于等于NN的正整数。你需要计算满足x<y<zx < y < zxxyyzz互质(即它们没有大于11的公因数)的三元组(x,y,z)(x, y, z)的数量。你还需要计算满足0<pN0 < p \leq Npp不属于任何三元组(不仅仅是互质的三元组)的数值pp的数量。

输入

输入由一系列正整数组成,每行一个。输入文件中的每个整数都将小于等于10000001000000。输入以文件结束符结束。

输出

对于输入文件中的每个整数NN,打印两个用空格分隔的整数。第一个整数是互质三元组的数量(使得三元组的每个分量都小于等于NN)。第二个数是小于等于NN的正整数中,不属于任何一个其分量都小于等于NN的三元组的数的数量。对于每个输入行,都应该有一个对应的输出行。

输入示例

10
25
100

输出示例

1 4
4 9
16 27

来源

1991年杜克大学互联网编程竞赛,UVA 106