project-euler

https://projecteuler.net/
Log | Files | Refs | README

Euler_14.cpp (597B)


      1 #include "Euler.h"
      2 
      3 int lengthOfChain(llui number)
      4 {
      5     int length = 0;
      6 
      7     while (number > 1)
      8     {
      9         if (number % 2 == 0)
     10         {
     11             number /= 2;
     12         }
     13         else
     14         {
     15             number = (number * 3) + 1;
     16         }
     17 
     18         length += 1;
     19     }
     20 
     21     return length;
     22 }
     23 
     24 llui Euler::CollatzConjecture()
     25 {
     26     int longestChain = 0;
     27     int idx = 0;
     28 
     29     for (int i = 0; i < 1000000; ++i)
     30     {
     31         int length = lengthOfChain(i);
     32 
     33         if (length > longestChain)
     34         {
     35             longestChain = length;
     36             idx = i;
     37         }
     38     }
     39 
     40     return idx;
     41 }