Return to Volume I Explanations

 Problem 106 - Fermat vs. Pythagoras, Explanations 

Algorithm

Oh oh! You have already seen this problem somewhere no ? Want a clue? The problem's real name is the Pythagorean triples... Wan't an hint? It's a parity problem... Somewhere in highschool maybe. If you have a good memory, you should remember that all integer solution of this equation are constrained this way : (x,y) or (y,x) = (2 u*v, u*u - v*v) and z = u*u + v*v .

Now that the math part is over, you can easily code a solution :

1) Create a dynamic array, since the input may be too big to fit in a static array, and nullify it.

2) Create a working greatest common divisor function.

3) Run following algorithm:


  for (u=1;u*u < n ;u++)
   for(v=1;((v < u)&&(u*u+v*v <= n));v++)
    if (gcd(u*u-v*v,2*u*v)==1){
     add 1 to the number of working pairs;
     mark all multiples of u*u-v*v, u*u+v*v and 2*u*v in the array;
     }
4) Output the number of working pairs as well as the number of 0 in the array.

Trick

Remember that you seek the number of relatively prime pairs and the number of not involved numbers (Relative primality does not matter). If you are in trouble with the multi-entry input, read my how to read input.

Additional Input

106.in

Additional Output

106.out

Background

Computer generated and assisted proofs and verification occupy a small niche in the realm of Computer Science. The first proof of the four-color problem was completed with the assistance of a computer program and current efforts in verification have succeeded in verifying the translation of high-level code down to the chip level.

This problem deals with computing quantities relating to part of Fermat's Last Theorem: that there are no integer solutions of tex2html_wrap_inline29 for n > 2.

The Problem

Given a positive integer N, you are to write a program that computes two quantities regarding the solution of

displaymath22

where x, y, and z are constrained to be positive integers less than or equal to N. You are to compute the number of triples (x,y,z) such that x<y< z, and they are relatively prime, i.e., have no common divisor larger than 1. You are also to compute the number of values tex2html_wrap_inline51 such that p is not part of any triple (not just relatively prime triples).

The Input

The input consists of a sequence of positive integers, one per line. Each integer in the input file will be less than or equal to 1,000,000. Input is terminated by end-of-file.

The Output

For each integer N in the input file print two integers separated by a space. The first integer is the number of relatively prime triples (such that each component of the triple is tex2html_wrap_inline57 ). The second number is the number of positive integers tex2html_wrap_inline57 that are not part of any triple whose components are all tex2html_wrap_inline57 . There should be one output line for each input line.

Sample Input

10
25
100

Sample Output

1 4
4 9
16 27

Return to Volume I Explanations