First, do a search for “Collatz Conjecture” to find out what it is (no need for me to explain it here…)

Although PHP isn’t the fastest language around, it’s extremely popular, and its my language of choice, so I wanted to make a basic program to try and solve this problem in PHP. So far, no results (as to be expected), but interesting to code nonetheless. Here’s what I made:

<?php for ($x = 2; $x >= 1; $x++) { if ($x%100000000 == 0){ echo 'not ' . $x . '<br />'; } $y = 0; $i = $x; do { $y++; if ($y === 999){ echo $x . '<br />'; break; } if ($i % 2 === 0){ $i = $i/2; } else { $i = 3 * $i + 1; } } while ($i != 4); } ?>

So what did I do here? It starts off with an intentional infinite loop. The `for`

statement runs as long as $x is greater than 1, and since we’re increasing $x on each iteration of the loop, its always true. The next three lines are really just a way to keep track of where the loop is currently up to, its set so that every 100 million iterations, it just says the current number.

Next I set `$y = 0`

, later $y will be incrementing to let me know how many steps are in the current sequence.

Then I set `$i = $x`

, this is just so that we can keep `$x`

in-tact, and not need to change it as we run through the actual sequence

The remainder of the code is a `do while`

loop that will continue looping as long as `$i != 4`

. So keep in mind that this is a loop inside of a loop. I chose to check if `$y === 999`

because there are barely any (and none that I’ve yet to find) numbers that have a sequence larger than 1000 steps. After checking the number of steps, we have an `if`

statement to do the actual Collatz Conjecture math.

Running this on my local computer, it takes about 30 minutes to search 100 million numbers. Again, PHP isn’t the fastest language around, and if you seriously wanted to find a number that didn’t match the 4-2-1 sequence, you would probably want to do this is `C`