Removing invalid previous solutions
This commit is contained in:
@ -1,61 +0,0 @@
|
|||||||
<?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;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (($handle = fopen("primes1000000.txt", "r")) !== FALSE) {
|
|
||||||
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
|
|
||||||
if ($data[1] >= 1000000)
|
|
||||||
break;
|
|
||||||
//If there's an even digit (or a 5) we can instantly exclude it as when rotated it will not not be a prime.
|
|
||||||
if (
|
|
||||||
strpos((string) $data[1], "0") !== false ||
|
|
||||||
strpos((string) $data[1], "2") !== false ||
|
|
||||||
strpos((string) $data[1], "4") !== false ||
|
|
||||||
strpos((string) $data[1], "5") !== false ||
|
|
||||||
strpos((string) $data[1], "6") !== false ||
|
|
||||||
strpos((string) $data[1], "8") !== false
|
|
||||||
) {
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$primes[] = (int) $data[1];
|
|
||||||
}
|
|
||||||
fclose($handle);
|
|
||||||
}
|
|
||||||
echo "File read\n";
|
|
||||||
|
|
||||||
$count = 1+1; //2 and 5 are primes but not included
|
|
||||||
foreach($primes as $prime)
|
|
||||||
{
|
|
||||||
//echo "Now testing $prime\n";
|
|
||||||
$newprime = $prime;
|
|
||||||
for($rotate = 1; $rotate < strlen($prime); $rotate++)
|
|
||||||
{
|
|
||||||
$newprime = substr($newprime, -1, 1).substr($newprime, 0, -1);
|
|
||||||
//echo "New prime: $newprime\n";
|
|
||||||
if(!in_array($newprime, $primes))
|
|
||||||
{
|
|
||||||
continue 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
$count++;
|
|
||||||
echo $prime.PHP_EOL;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "Total: $count\n";
|
|
@ -1,40 +1,61 @@
|
|||||||
<?php
|
<?php
|
||||||
define('MAX',1000000);
|
|
||||||
|
function is_prime($prime) {
|
||||||
function is_prime($prime) {
|
if($prime < 1)
|
||||||
$sqrt = sqrt($prime);
|
return false;
|
||||||
for ($i = 3; $i <= $sqrt; $i+=2){
|
|
||||||
if ($prime%$i == 0) return false;
|
if($prime == 1)
|
||||||
}
|
return true;
|
||||||
return true;
|
if($prime == 2)
|
||||||
}
|
return true;
|
||||||
|
$sqrt = sqrt($prime);
|
||||||
function fact($int){
|
for ($i = 3; $i <= $sqrt; $i+=2){
|
||||||
static $facts = array(1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880);
|
if ($prime%$i == 0) return false;
|
||||||
return $facts[$int];
|
}
|
||||||
}
|
return true;
|
||||||
$primes = array(2);
|
}
|
||||||
$primes_ordered = array(2);
|
|
||||||
for($i=3;$i<MAX;$i+=2) {
|
if (($handle = fopen("primes1000000.txt", "r")) !== FALSE) {
|
||||||
if(is_prime($i)) {
|
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
|
||||||
//$primes[] = $i;
|
if ($data[1] >= 1000000)
|
||||||
$temp = str_split($i);
|
break;
|
||||||
sort($temp);
|
//If there's an even digit (or a 5) we can instantly exclude it as when rotated it will not not be a prime.
|
||||||
$primes_ordered[] = implode($temp);
|
if (
|
||||||
}
|
strpos((string) $data[1], "0") !== false ||
|
||||||
}
|
strpos((string) $data[1], "2") !== false ||
|
||||||
echo "Found primes below 1mil\n";
|
strpos((string) $data[1], "4") !== false ||
|
||||||
$result = 0;
|
strpos((string) $data[1], "5") !== false ||
|
||||||
foreach($primes_ordered as $p) {
|
strpos((string) $data[1], "6") !== false ||
|
||||||
$counts = fact(strlen($p));
|
strpos((string) $data[1], "8") !== false
|
||||||
foreach($primes_ordered as $order) {
|
) {
|
||||||
if($p == $order) {
|
|
||||||
$counts--;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
$primes[] = (int) $data[1];
|
||||||
if($counts == 0) {
|
}
|
||||||
//echo $p."\n";
|
fclose($handle);
|
||||||
$result++;
|
}
|
||||||
}
|
echo "File read\n";
|
||||||
}
|
|
||||||
echo $result;
|
$count = 1+1; //2 and 5 are primes but not included
|
||||||
|
foreach($primes as $prime)
|
||||||
|
{
|
||||||
|
//echo "Now testing $prime\n";
|
||||||
|
$newprime = $prime;
|
||||||
|
for($rotate = 1; $rotate < strlen($prime); $rotate++)
|
||||||
|
{
|
||||||
|
$newprime = substr($newprime, -1, 1).substr($newprime, 0, -1);
|
||||||
|
//echo "New prime: $newprime\n";
|
||||||
|
if(!in_array($newprime, $primes))
|
||||||
|
{
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$count++;
|
||||||
|
echo $prime.PHP_EOL;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Total: $count\n";
|
Reference in New Issue
Block a user