From 3b4b6d5362ad99cd9cb9e2d11b22cbf32fe2cccf Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Sat, 25 Jun 2016 20:39:49 +0200 Subject: [PATCH] Translating... --- mtproto.php | Bin 12502 -> 12506 bytes prime.php | 14 +++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/mtproto.php b/mtproto.php index 476f01654efc39a93a0ba3e433d5d256b14b98dd..87aa9c8a2f0d7c97de97e517b30266e70fe0e984 100755 GIT binary patch delta 22 dcmcbXcq?&33llRJC+FlACQU}J&1;!7^#EO02F?Hg delta 24 gcmcbWcr9^53)AFv%)FDQFv(25%bdJfg!z~*0Eli0(f|Me diff --git a/prime.php b/prime.php index 541805a9..a6fe926e 100644 --- a/prime.php +++ b/prime.php @@ -14,7 +14,15 @@ function everynth($array, $n) { } return $result; } - +function array_merge_ignore_keys($array1, $array2) { + if(count($array1) == count($array2)) { + $i = -1; + foreach ($array1 as $key => $val){ + $array1[$key] = $array2[$i++]; + } + } else return null; + return $array1; +} function primesbelow($N) { $correction = (($N % 6) > 1); $N = [0 => $N, 1 => ($N - 1), 2 => ($N + 4), 3 => ($N + 3), 4 => ($N + 2), 5 => ($N + 1) ][($N % 6) ]; @@ -23,8 +31,8 @@ function primesbelow($N) { foreach (pyjslib_range(((pyjslib_int(pow($N, 0.5)) / 3) + 1)) as $i) { if ($sieve[$i]) { $k = ((3 * $i) + 1) | 1; - $sieve = array_merge($sieve, array_merge(everynth(array_splice($sieve, floor($k*$k / 3)), 2*$k), ([false] * ((((($N / 6) - (($k * $k) / 6)) - 1) / $k) + 1)))); - $sieve = array_merge($sieve, array_merge(everynth(array_splice($sieve, floor((k*k + 4*k - 2*k*(i%2)) / 3)), 2*$k), ([false] * ((((($N / 6) - (((($k * $k) + (4 * $k)) - ((2 * $k) * ($i % 2))) / 6)) - 1) / $k) + 1)))); + $sieve = array_merge($sieve, array_merge_ignore_keys(everynth(array_splice($sieve, floor($k*$k / 3)), 2*$k), ([false] * ((((($N / 6) - (($k * $k) / 6)) - 1) / $k) + 1)))); + $sieve = array_merge($sieve, array_merge_ignore_keys(everynth(array_splice($sieve, floor((k*k + 4*k - 2*k*(i%2)) / 3)), 2*$k), ([false] * ((((($N / 6) - (((($k * $k) + (4 * $k)) - ((2 * $k) * ($i % 2))) / 6)) - 1) / $k) + 1)))); } } return ([2, 3] + array_map(function ($i, $sieve) { if($sieve[$i]) return (3 * $i + 1) | 1; }, pyjslib_range(1, (($N / 3) - $correction)), $sieve));