Monday, August 31, 2009

Using Mysql to find prime factors

On my Mysql blog I've come up against the poser from the Euler Project : "What is the largest prime factor of the number 600851475143 ".

I think I've cracked this in Mysql, but I'm not 100% confident (well it works in this case, but will it always work?)

Anyway, here it is (I use the table Orders only as it contains plenty of rows):

*** set variables ***
set @var1=2;
set @varreset=2;
set @bignuma= 600851475143;

*** sql code ***
select a1factor from
(select
case when mod(@bignuma,@var1) = 0 then @var1:=@varreset else @var1:=@var1+1 end as a1factor,
case when mod(@bignuma,@var1) = 0 then @bignuma:=@bignuma/@var1 end as new_factor
from orders where @var1<@bignuma ) tmp
where new_factor is not null
order by a1factor desc;

No comments:

Post a Comment