master amadaluzia/rosetta-collatz / c++ / src / rosetta_collatz.cpp
 1#include <sstream>
 2#include <iostream>
 3
 4int collatz(int a) {
 5    if (a % 2 == 0)
 6        return a / 2;
 7    return 3 * a + 1;
 8}
 9
10std::string collatzSequence(int a) {
11    std::stringstream sstream;
12    sstream << a << ": ";
13    for (int i = a; i >= 1; i = collatz(i)) {
14        if (i == 1) {
15            sstream << "1\n";
16            break;
17        }
18        sstream << i << ", ";
19    }
20    return sstream.str();
21}
22
23int main(void) {
24    for (int i = 1; i <= 10000; i++) {
25        std::string message = collatzSequence(i);
26        std::cout << message;
27    }
28}