Deprecated: Assigning the return value of new by reference is deprecated in /customers/1/f/c/dahoiv.net/httpd.www/programmering/wp-includes/cache.php on line 36 Deprecated: Assigning the return value of new by reference is deprecated in /customers/1/f/c/dahoiv.net/httpd.www/programmering/wp-includes/query.php on line 21 Deprecated: Assigning the return value of new by reference is deprecated in /customers/1/f/c/dahoiv.net/httpd.www/programmering/wp-includes/theme.php on line 507 Project Euler - problem 014

Project Euler - problem 014

August 1st, 2007 by Daniel Høyer Iversen

The following iterative sequence is defined for the set of positive integers:

n ->n/2 (n is even)
n ->3n + 1 (n is odd)

Using the rule above and starting with 13, we generate the following sequence:
13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one million.

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
 
#include <iostream>
#include <ctime>
using namespace std;
 
#define max 1000000
 
int numbersOfTerms(int num);
 
int main ()
{
clock_t start = clock();
int res(0), temp(0);
 
for(int i = max; i > 0; i--){
temp = numbersOfTerms(i);
if( temp > res){
res = temp;
cout << res << '\n';
}
cout << i << " ";
}
 
cout << "resultatet er ";
cout << res << "\n";
cout<< ( ( clock() - start ) / (double)CLOCKS_PER_SEC ) <<'\n';
return 0;
}
 
int numbersOfTerms(int num){
int res(1);
while(num != 1){
if(num % 2 == 0){
num /= 2;
} else {
num = 3*num + 1;
}
res ++;
}
return res;
}
Do you want to use this code?

2 Responses to “Project Euler - problem 014”

  1. dhdfhdf

    it doesnt work

  2. Hmm yeah, the code never finishes for me.

    Run as:
    $ g -Wall -o problem0014cpp problem0014.cpp && ./problem0014cpp

Leave a Response