Problem14
#include <iostream> using namespace std; #define NUM 1000000 int main(int argc, char **argv) { bool t[NUM]; memset(t, true, NUM); int ans = -1; int max = -1; for (int i = 2; i < NUM; i++) { if (t[i] == false) { continue; } unsigned int n = i; int l = 1; while(n != 1) { if (n%2 == 0) { n /= 2; } else { n = 3*n + 1; } l++; if (n < NUM) { t[n] = false; } } int j; for (j = i; j < NUM && false; j*=2) { t[j] = false; l++; } l--; if (max < l) { max = l; ans = j; } } cout << ans << endl; return 0; }