Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function add($x,$y) {
- $a = min($x,$y);
- $b = max($x,$y);
- $x = strval($a);
- $y = strval($b);
- $r = 0;
- if (strlen($x) < strlen($y)) {
- $t = strlen($y)-strlen($x);
- for ($i = 0; $i < strlen(max($x,$y)); $i++) {
- if (!is_numeric($x[$i])) { $x[$i] = 0; }
- if (!is_numeric($y[$i])) { $y[$i] = 0; }
- }
- for ($i = 0; $i < strlen(max($x,$y)) - $t; $i++) {
- $zz[$t+$i] = $x[$i];
- }
- for ($i = 0; $i < $t; $i++) {
- $zz[$i] = 0;
- }
- for ($i = strlen($y) - 1; $i >= 0; $i--) {
- $p = strval($zz[$i]+$y[$i]+$r);
- $ld[$i] = $p[strlen($p)-1];
- $r = floor(($zz[$i]+$y[$i]+$r)/10);
- }
- $ld[-1] = $r;
- if ($ld[-1] > 0) {
- for ($i = -1; $i < count($ld); $i++) {
- $str .= $ld[$i];
- }
- } else {
- for ($i = 0; $i < count($ld); $i++) {
- $str .= $ld[$i];
- }
- }
- } elseif (strlen($x) == strlen($y) && strlen($x) > 1) {
- $t = strlen($y)-strlen($x);
- for ($i = 0; $i < strlen(max($x,$y)); $i++) {
- if (!is_numeric($x[$i])) { $x[$i] = 0; }
- if (!is_numeric($y[$i])) { $y[$i] = 0; }
- }
- for ($i = strlen($y) - 1; $i >= 0; $i--) {
- $p = strval($x[$i]+$y[$i]+$r);
- $ld[$i] = $p[strlen($p)-1];
- $r = floor(($x[$i]+$y[$i]+$r)/10);
- }
- $ld[-1] = $r;
- if ($ld[-1] > 0) {
- for ($i = -1; $i < count($ld); $i++) {
- $str .= $ld[$i];
- }
- } else {
- for ($i = 0; $i < count($ld); $i++) {
- $str .= $ld[$i];
- }
- }
- } else {
- $str = $x + $y;
- }
- return $str;
- }
- function div_2($n) {
- $m = strlen(strval($n));
- $n = strval($n);
- for ($i = $m - 1; $i >= 0; $i--) {
- $p[$i] += floor($n[$i]/2);
- if ($n[$i]/2-floor($n[$i]/2) != 0) { $p[$i+1] += 5; }
- }
- if ($p[0] == 0) {
- for ($i = 1; $i < $m; $i++) {
- $str .= $p[$i];
- }
- } else {
- for ($i = 0; $i < $m; $i++) {
- $str .= $p[$i];
- }
- }
- if ($p[$m] == 5) { $gok = 1; }
- else { $gok = 0; }
- return [$str,$gok];
- }
- function mult($m,$n) {
- $s = $m;
- for ($i = 2; $i <= $n; $i++) {
- $s = add($m,$s);
- }
- return $s;
- }
- function collatz($n) {
- $array1 = div_2($n);
- $array2 = div_2(add(mult($n,3),"1"));
- if ($array1[1] == 0) { return $array1[0]; }
- else { return $array2[0]; }
- }
- $i = "5764607523034835996"; //i've tested all numbers between this 1.25x2^68 and this one
- while ($i != "6000000000000000000") {
- $i = add($i,1);
- $b = $i;
- if (intval($b[strlen($b) - 1]) == 0 || intval($b[strlen($b) - 1]) == 5) { print "$b - 1 checked\n"; }
- while ($b != "1") {
- $b = collatz($b);
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement