Solve ProjectEuler 049 and 050.
This commit is contained in:
		
							
								
								
									
										30
									
								
								solutions/ProjectEuler/049/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								solutions/ProjectEuler/049/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
include("vendor/autoload.php");
 | 
			
		||||
 | 
			
		||||
for($p1 = 1000; $p1<9999-(2*3330); $p1++)
 | 
			
		||||
{
 | 
			
		||||
    if(CodingTests\Prime::isPrime($p1)) 
 | 
			
		||||
    {
 | 
			
		||||
        $p2 = $p1 + 3330;
 | 
			
		||||
        if(CodingTests\Prime::isPrime($p2)) 
 | 
			
		||||
        {
 | 
			
		||||
            $p3 = $p2 + 3330;
 | 
			
		||||
            if(CodingTests\Prime::isPrime($p3)) 
 | 
			
		||||
            {   
 | 
			
		||||
               $p1_occ = count_chars($p1);
 | 
			
		||||
               ksort($p1_occ);
 | 
			
		||||
               $p2_occ = count_chars($p2);
 | 
			
		||||
               ksort($p2_occ);
 | 
			
		||||
               $p3_occ = count_chars($p3);
 | 
			
		||||
               ksort($p3_occ);
 | 
			
		||||
 | 
			
		||||
               if( $p1_occ == $p2_occ && $p2_occ == $p3_occ) 
 | 
			
		||||
               {
 | 
			
		||||
                    echo "Permutation $p1$p2$p3\n";
 | 
			
		||||
               }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								solutions/ProjectEuler/050/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								solutions/ProjectEuler/050/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
include("vendor/autoload.php");
 | 
			
		||||
define("MAX", 1000000);
 | 
			
		||||
CodingTests\Prime::isPrime((3));
 | 
			
		||||
$primes = [];
 | 
			
		||||
 | 
			
		||||
function is_prime(int $n) :bool{for($i=$n**.5|1;$i&&$n%$i--;);return!$i&&$n>1;}
 | 
			
		||||
for($p= 1; $p < MAX; $p+=2)
 | 
			
		||||
{
 | 
			
		||||
    if($p%1001 == 0) 
 | 
			
		||||
    {
 | 
			
		||||
        echo $p."\n";
 | 
			
		||||
    }
 | 
			
		||||
    if(CodingTests\Prime::isPrime($p))
 | 
			
		||||
    {
 | 
			
		||||
        $primes[] = $p;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
echo "Precalculate done";
 | 
			
		||||
$longest = 0;
 | 
			
		||||
for($start = 0; $start < sizeof($primes); $start++) {
 | 
			
		||||
 | 
			
		||||
    for($len = 1; $len <sizeof($primes)-$start; $len++) 
 | 
			
		||||
    {
 | 
			
		||||
        //print_r(array_slice($primes, $start, $len));
 | 
			
		||||
        $sum = array_sum(array_slice($primes, $start, $len));
 | 
			
		||||
        if($sum > MAX)
 | 
			
		||||
        {
 | 
			
		||||
            continue 2;
 | 
			
		||||
        }
 | 
			
		||||
        if(in_array($sum, $primes) && $len > $longest)
 | 
			
		||||
        {
 | 
			
		||||
            echo "Found $len=>$sum \n";
 | 
			
		||||
 | 
			
		||||
            $longest = $len;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user