Restructuring
This commit is contained in:
20
solutions/ProjectEuler/027/desc.yml
Normal file
20
solutions/ProjectEuler/027/desc.yml
Normal file
@ -0,0 +1,20 @@
|
||||
title: Quadratic primes
|
||||
url: http://projecteuler.net/problem=27
|
||||
|
||||
desc: |
|
||||
Euler discovered the remarkable quadratic formula:
|
||||
n<> + n + 41
|
||||
It turns out that the formula will produce 40 primes for the consecutive values n = 0 to 39. However, when n = 40, 402 + 40 + 41 = 40(40 + 1) + 41 is divisible by 41, and certainly when n = 41, 41<34> + 41 + 41 is clearly divisible by 41.
|
||||
The incredible formula n<> - 79n + 1601 was discovered, which produces 80 primes for the consecutive values n = 0 to 79. The product of the coefficients, -79 and 1601, is -126479.
|
||||
Considering quadratics of the form:
|
||||
n<> + an + b, where |a| < 1000 and |b| < 1000
|
||||
where |n| is the modulus/absolute value of n
|
||||
e.g. |11| = 11 and |-4| = 4
|
||||
Find the product of the coefficients, a and b, for the quadratic expression that produces the maximum number of primes for consecutive values of n, starting with n = 0
|
||||
|
||||
solution: Bruteforce
|
||||
|
||||
solutions:
|
||||
solve.php:
|
||||
desc: Basic Solution - needs BCMath
|
||||
language: php
|
30
solutions/ProjectEuler/027/problem27.php
Normal file
30
solutions/ProjectEuler/027/problem27.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
function is_prime($prime) {
|
||||
if($prime < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if($prime == 1)
|
||||
return true;
|
||||
if($prime == 2)
|
||||
return true;
|
||||
$sqrt = sqrt($prime);
|
||||
for ($i = 3; $i <= $sqrt; $i+=2){
|
||||
if ($prime%$i == 0) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
$high = 0;
|
||||
$max_primes = 0;
|
||||
for($a=-999; $a<1000; $a++) {
|
||||
for($b=-999; $b<1000; $b=$b+2) {
|
||||
$n=0;
|
||||
while(is_prime($n*$n + $a * $n + $b)) {
|
||||
$n++;
|
||||
if($n > $max_primes) {
|
||||
$max_primes = $n;
|
||||
echo "max: $n a: $a b: $b\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
32
solutions/ProjectEuler/027/solve.php
Normal file
32
solutions/ProjectEuler/027/solve.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
function is_prime($prime) {
|
||||
if($prime == 1)
|
||||
return true;
|
||||
if($prime == 2)
|
||||
return true;
|
||||
$sqrt = sqrt($prime);
|
||||
for ($i = 3; $i <= $sqrt; $i+=2){
|
||||
if ($prime%$i == 0) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
$high = 0;
|
||||
$max_primes = 0;
|
||||
for($a=-999; $a<1000; $a++) {
|
||||
for($b=-999; $b<1000; $b=$b+2) {
|
||||
|
||||
$n=0;
|
||||
while(true) {
|
||||
echo $n*$n + $a * $n + $b . "\n";
|
||||
if(!is_prime($n*$n + $a * $n + $b)) {
|
||||
if($n > $max_primes) {
|
||||
$max_primes = $n;
|
||||
echo "max: $n a: $a b: $b\n";
|
||||
}
|
||||
break;
|
||||
}
|
||||
$n++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
13
solutions/ProjectEuler/027/solve.rb
Normal file
13
solutions/ProjectEuler/027/solve.rb
Normal file
@ -0,0 +1,13 @@
|
||||
DIGITS = 1000
|
||||
|
||||
max = 10 ** (DIGITS-1)
|
||||
fcurrent = 1
|
||||
fprev = 1
|
||||
term = 2
|
||||
while fcurrent < max do
|
||||
term = term + 1
|
||||
fnext = fcurrent + fprev
|
||||
fprev = fcurrent;
|
||||
fcurrent = fnext;
|
||||
end
|
||||
puts term
|
Reference in New Issue
Block a user