Talk:Special pythagorean triplet: Difference between revisions

From Rosetta Code
Content added Content deleted
m (Undent that last comment)
(Some further observations)
Line 3: Line 3:
the smallest value of i<sup>2</sup>-g<sup>2</sup> is when g=(999-n)/2 and i=1000-g
the smallest value of i<sup>2</sup>-g<sup>2</sup> is when g=(999-n)/2 and i=1000-g
if i<sup>2</sup>-g<sup>2</sup> is greater than n<sup>2</sup> then there can be no solution for this n with a smaller g
if i<sup>2</sup>-g<sup>2</sup> is greater than n<sup>2</sup> then there can be no solution for this n with a smaller g
n must be even
2(g+i) must be a factor of n<sup>2</sup>
given these conditions the solution is n, ((g+i)/2)-n<sup>2</sup>/2(g+i), ((g+i)/2)+n<sup>2</sup>/2(g+i) asserting that n<g.
--[[User:Nigel Galloway|Nigel Galloway]] ([[User talk:Nigel Galloway|talk]]) 14:11, 31 August 2021 (UTC)
--[[User:Nigel Galloway|Nigel Galloway]] ([[User talk:Nigel Galloway|talk]]) 14:11, 31 August 2021 (UTC)


Line 9: Line 12:


The task description says there is only one triple with a + b + c = 1000, so it must be a primitive one. --[[User:Tigerofdarkness|Tigerofdarkness]] ([[User talk:Tigerofdarkness|talk]]) 18:14, 31 August 2021 (UTC)
The task description says there is only one triple with a + b + c = 1000, so it must be a primitive one. --[[User:Tigerofdarkness|Tigerofdarkness]] ([[User talk:Tigerofdarkness|talk]]) 18:14, 31 August 2021 (UTC)

I have added three observations to the list above which remove the requirement for searching which I think may need explanation. For a given n identify a value g such that n+(g-1)+(g+1)=1000 (eg 3,498,499). The problem may be rewritten as n<sup>2</sup>=(g+x)<sup>2</sup>-(g-x)<sup>2</sup>. (g+x)<sup>2</sup>-(g-x)<sup>2</sup> is 4xg. Therefore 4g must be a factor of n<sup>2</sup>, which implies that n is even. To determine x I divide n<sup>2</sup> by 4g. Let me work this for n=200. g=400 {(1000-n)/2}. 4g=1600. 40,000/1600=25 so the solution is 200,400-25,400+25.--[[User:Nigel Galloway|Nigel Galloway]] ([[User talk:Nigel Galloway|talk]]) 14:06, 1 September 2021 (UTC)

Revision as of 14:07, 1 September 2021

For those paying "attention to timings" and more importantly for those paying attention to other comments I have made on these Euler tasks about filling RC with solutions worse than I would expect from a schoolboy with a pencil, considering n2+g2=i2 and n+g+i=1000 n<g<i note the following:

the largest value n can take is 332 with g=333 and i=335
the smallest value of i2-g2 is when g=(999-n)/2 and i=1000-g
if i2-g2 is greater than n2 then there can be no solution for this n with a smaller g
n must be even
2(g+i) must be a factor of n2
given these conditions the solution is n, ((g+i)/2)-n2/2(g+i), ((g+i)/2)+n2/2(g+i) asserting that n<g. 

--Nigel Galloway (talk) 14:11, 31 August 2021 (UTC)

Isn't the task to print out abc? Also, isn't using Euclid's formula (as in the XPL0 solution) going to be faster - less values to try ? --Tigerofdarkness (talk) 17:34, 31 August 2021 (UTC)

The task description says there is only one triple with a + b + c = 1000, so it must be a primitive one. --Tigerofdarkness (talk) 18:14, 31 August 2021 (UTC)

I have added three observations to the list above which remove the requirement for searching which I think may need explanation. For a given n identify a value g such that n+(g-1)+(g+1)=1000 (eg 3,498,499). The problem may be rewritten as n2=(g+x)2-(g-x)2. (g+x)2-(g-x)2 is 4xg. Therefore 4g must be a factor of n2, which implies that n is even. To determine x I divide n2 by 4g. Let me work this for n=200. g=400 {(1000-n)/2}. 4g=1600. 40,000/1600=25 so the solution is 200,400-25,400+25.--Nigel Galloway (talk) 14:06, 1 September 2021 (UTC)