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