Euler/_functions.php

69 lines
1.4 KiB
PHP
Raw Normal View History

2015-11-15 22:53:49 +01:00
<?php
function isPrimary($number){
$i=1;
while(getPrimeNumber($i) <= sqrt($number)){
if(fmod($i,getPrimeNumber($i))==0){
return false;
}
$i=$i+2;
}
return true;
}
function getPrimeNumber($order){
static $primeNumbersList=array(2,3);
//if already finded:
if(isset($primeNumbersList[$order-1])){
return $primeNumbersList[$order-1];
}
$i=$primeNumbersList[count($primeNumbersList)-1] + 2;
while (count($primeNumbersList) < $order){
$isPrimaryNumber=true;
2015-11-15 23:53:52 +01:00
$index=0;
while(($primeNumbersList[$index]<=sqrt($i)) && $index < count($primeNumbersList)){
if(fmod($i,$primeNumbersList[$index])==0){
2015-11-15 22:53:49 +01:00
$isPrimaryNumber=false;
break;
}
2015-11-15 23:53:52 +01:00
$index++;
2015-11-15 22:53:49 +01:00
}
if($isPrimaryNumber){
$primeNumbersList[]=$i;
}
$i=$i+2;//sert à rien de tester les nombres pairs
}
return $i-2;
2015-11-21 12:34:06 +01:00
}
2015-11-21 13:25:47 +01:00
2015-11-21 14:50:14 +01:00
function getAllDivisors($n,$takeOne=true,$takeHimself=true){
$divisors=array();
if($takeOne){
$divisors[]=1;
}
if($takeHimself){
$divisors[]=$n;
}
2015-11-21 12:34:06 +01:00
for($i=2;$i<=sqrt($n);$i++){
if(fmod($n,$i)==0){
$divisors[]=$i;
2015-11-21 13:25:47 +01:00
if($i <> $n/$i){
$divisors[]=$n/$i;
}
2015-11-21 12:34:06 +01:00
}
}
2015-11-22 00:41:55 +01:00
sort($divisors);
2015-11-21 12:34:06 +01:00
return $divisors;
2015-11-22 00:41:55 +01:00
}
function isAbundant($n){
if(array_sum(getAllDivisors($n,true,false))>$n)
return true;
else
return false;
2015-11-15 22:53:49 +01:00
}