-
Notifications
You must be signed in to change notification settings - Fork 0
/
divisor.php
48 lines (38 loc) · 828 Bytes
/
divisor.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
$logs = array(2=>103,3=>163,5=>239,7=>289,11=>356,13=>381,17=>421,19=>437.5);
for ($number = 1; $number<=256; $number++) {
echo $number;
echo ' ';
//var_dump(factorise($number));
echo logarithm(factorise($number));
echo '<br>';
}
function factorise($number) {
$factors = array();
$root = floor(sqrt($number));
for ($divisor = 1; $divisor<=$root; $divisor+=2) {
$factor = $divisor==1?2:$divisor;
if ($number%$factor==0) {
$number = $number/$factor;
$factors[] = $factor;
$divisor = -1;
}
}
if ($number>1) {
$factors[] = $number;
}
return $factors;
}
function logarithm($factors) {
global $logs;
$sum = 0;
foreach ($factors as $factor) {
if (isset($logs[$factor])) {
$sum += $logs[$factor];
} else {
return 0;
}
}
return $sum;
}
?>