Project Euler Problem 72

問題概要

和訳Wikiを参照

解法

分母をdとした時に,分子を(int)(d*3/7)から<3/7を満たすように全探索.

実装(PHP)

<?php
        function gcd($a,$b){
                return $b==0?$a:gcd($b,$a%$b);
        }
        define("d",1000000);
        $ansa=10000;
        $ansb=1;
        $sub=2.11111;
        for($i=1;$i<=d;$i++){
                $a=(int)($i*3/7);
                while($a*7<3*$i){
                        if(gcd($a,$i)==1){
                                $sub2=3.0/7-$a/$i;
                                if($sub2<$sub){
                                        $ansa=$a;
                                        $ansb=$i;
                                        $sub=$sub2;
                                }
                        }
                        $a++;
                }
        }
        echo $ansa;
        echo "\n";
        echo $ansb;

?>