Solved a few more problems
003: php 005: php, ruby 006: php, ruby, c
This commit is contained in:
		
							
								
								
									
										15
									
								
								ProjectEuler/003/desc.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								ProjectEuler/003/desc.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
title: Find the largest prime factor of a composite number.
 | 
			
		||||
url: http://projecteuler.net/problem=3
 | 
			
		||||
 | 
			
		||||
desc: |
 | 
			
		||||
  The prime factors of 13195 are 5, 7, 13 and 29.
 | 
			
		||||
  What is the largest prime factor of the number 600851475143 ?
 | 
			
		||||
  
 | 
			
		||||
solution: |
 | 
			
		||||
  Use factorization to find the largest prime factor
 | 
			
		||||
 | 
			
		||||
solutions:
 | 
			
		||||
  solve.php:
 | 
			
		||||
    desc: Basic solution
 | 
			
		||||
    language: php
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										33
									
								
								ProjectEuler/003/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								ProjectEuler/003/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
<?php
 | 
			
		||||
$number = 600851475143;
 | 
			
		||||
 | 
			
		||||
echo max(factorize($number));
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Returns a sorted array of the prime factorization of $num
 | 
			
		||||
 * @staticvar array $aFactors
 | 
			
		||||
 * @param type int Number to factorize
 | 
			
		||||
 * @return type array Prime factors
 | 
			
		||||
 */
 | 
			
		||||
function factorize($num) {
 | 
			
		||||
	// Returns a sorted array of the prime factorization of $num 
 | 
			
		||||
	// Caches prior results.  Returns empty array for |$num|<2 
 | 
			
		||||
	// eg. factorize(360) => [5, 3, 3, 2, 2, 2] 
 | 
			
		||||
	static $aFactors = array();
 | 
			
		||||
	if (2 > $num = abs($num))
 | 
			
		||||
		return array();  // negatives, 1, 0 
 | 
			
		||||
 | 
			
		||||
	if ($aFactors[$key = "x$num"]) {	 // handles doubles 
 | 
			
		||||
		// Been there, done that 
 | 
			
		||||
		if (($factor = $aFactors[$key]) == $num)
 | 
			
		||||
			return array($num);
 | 
			
		||||
		return array_merge(factorize($num / $factor), array($factor));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Find a smallest factor 
 | 
			
		||||
	for ($sqrt = sqrt($num), $factor = 2; $factor <= $sqrt; ++$factor)
 | 
			
		||||
		if (floor($num / $factor) == $num / $factor)
 | 
			
		||||
			return array_merge(factorize($num / $factor), array($aFactors[$key] = $factor));
 | 
			
		||||
 | 
			
		||||
	return (array($aFactors[$key] = $num));
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								ProjectEuler/005/desc.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								ProjectEuler/005/desc.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
title: What is the smallest number divisible by each of the numbers 1 to 20?
 | 
			
		||||
url: http://projecteuler.net/problem=5
 | 
			
		||||
 | 
			
		||||
desc: |
 | 
			
		||||
  2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
 | 
			
		||||
  What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
 | 
			
		||||
  
 | 
			
		||||
solution: |
 | 
			
		||||
  See code
 | 
			
		||||
 | 
			
		||||
solutions:
 | 
			
		||||
  solve.php:
 | 
			
		||||
    desc: Basic solution
 | 
			
		||||
    language: php
 | 
			
		||||
  solve.rb:
 | 
			
		||||
    desc: Basic solution in Ruby
 | 
			
		||||
    language: ruby
 | 
			
		||||
							
								
								
									
										12
									
								
								ProjectEuler/005/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								ProjectEuler/005/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
<?php
 | 
			
		||||
for($i=20;true;$i+=20) {
 | 
			
		||||
	$div = 19;
 | 
			
		||||
 | 
			
		||||
	while(!($i % $div)) {
 | 
			
		||||
		$div--;
 | 
			
		||||
		if($div == 0) {
 | 
			
		||||
			echo $i;
 | 
			
		||||
			die;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								ProjectEuler/005/solve.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								ProjectEuler/005/solve.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
max = 0;
 | 
			
		||||
(100..1000).each do |num1|
 | 
			
		||||
	(100..1000).each do |num2|
 | 
			
		||||
		sum = num1 * num2
 | 
			
		||||
		if( sum > max and sum.to_s.reverse  == sum.to_s) 
 | 
			
		||||
			max = sum
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
print max
 | 
			
		||||
							
								
								
									
										24
									
								
								ProjectEuler/006/desc.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								ProjectEuler/006/desc.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
title: What is the smallest number divisible by each of the numbers 1 to 20?
 | 
			
		||||
url: http://projecteuler.net/problem=6
 | 
			
		||||
 | 
			
		||||
desc: |
 | 
			
		||||
  The sum of the squares of the first ten natural numbers is,
 | 
			
		||||
  1^2 + 2^2 + ... + 10^2 = 385
 | 
			
		||||
  The square of the sum of the first ten natural numbers is,
 | 
			
		||||
  (1 + 2 + ... + 10)^2 = 55^2 = 3025
 | 
			
		||||
  Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025  385 = 2640.
 | 
			
		||||
  Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.
 | 
			
		||||
  
 | 
			
		||||
solution: |
 | 
			
		||||
  See code
 | 
			
		||||
 | 
			
		||||
solutions:
 | 
			
		||||
  solve.php:
 | 
			
		||||
    desc: Basic solution
 | 
			
		||||
    language: php
 | 
			
		||||
  solve.rb:
 | 
			
		||||
    desc: Basic Ruby solution
 | 
			
		||||
    language: ruby
 | 
			
		||||
  solve.rb
 | 
			
		||||
    desc: ANSI C solution (Tested with TCC)
 | 
			
		||||
    language: c
 | 
			
		||||
							
								
								
									
										19
									
								
								ProjectEuler/006/solve.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								ProjectEuler/006/solve.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
int main( )
 | 
			
		||||
{
 | 
			
		||||
	int num;
 | 
			
		||||
	int result;
 | 
			
		||||
	
 | 
			
		||||
	int square = 0;
 | 
			
		||||
	int sum = 0;
 | 
			
		||||
	
 | 
			
		||||
	for(num=1; num<=100; num++) {
 | 
			
		||||
		square += pow(num,2);
 | 
			
		||||
		sum += num;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	result = pow(sum,2) - square;
 | 
			
		||||
	printf("%d", result);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								ProjectEuler/006/solve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								ProjectEuler/006/solve.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
<?php
 | 
			
		||||
$square =0;
 | 
			
		||||
$sum =0;
 | 
			
		||||
for($num=1;$num<101;$num++) {
 | 
			
		||||
	$square += pow($num,2);
 | 
			
		||||
	$sum += $num;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
echo pow($sum,2) - $square;
 | 
			
		||||
							
								
								
									
										7
									
								
								ProjectEuler/006/solve.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ProjectEuler/006/solve.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
square = 0
 | 
			
		||||
sum = 0
 | 
			
		||||
(1..100).each do |num| 
 | 
			
		||||
	square += num**2;
 | 
			
		||||
	sum += num;
 | 
			
		||||
end
 | 
			
		||||
puts sum**2 - square;
 | 
			
		||||
		Reference in New Issue
	
	Block a user