Project Euler Problem 9

2014年03月06日

Q:

A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,a2 + b2 = c2. For example, 32 + 42 = 9 + 16 = 25 = 52. There exists exactly one Pythagorean triplet for which a + b + c = 1000.Find the product abc.

R

1st version

a <- 1
b <- 1
while(a < (1000/3))
{
    while(b < (1000-a))
    {
        breakout <- FALSE
        if(a^2+b^2==(1000-a-b)^2)
        {
            p <- a\*b\*(1000-a-b);
            break;
            breakout <- TRUE;
        }
        else b <- b+1
    }
    if(breakout) break
    else a < a+1
}
print(p)

2nd version

re <- outer(1:1000,1:1000,function(x,y){return(x^2+y^2==(1000-x-y)^2)})
print(prod(which(re)%%1000))