Am 19.02.2013 12:42, schrieb Piet van Oostrum: > Terry Reedy <tjre...@udel.edu> writes: >> I find this surprising too. I am also surprised that it even works, >> given that the highest intermediate value is about 57 billion and I do >> not remember that Basic had infinite precision ints. > > That may explain why the Basic version is faster: it gets overflow and > then it may have taken some shortcuts.
Consider this C program #include <stdio.h> int main(void) { int max = 0; int m = 0; long int n; int count; int num; while(m<=1000000) { m++; n = m; count = 0; while(n != 1) { count++; if(n % 2 == 0) { n = n / 2; } else { n = n*3 + 1; } } if(count > max) { max = count; num = m; } } printf("%d, %d\n", num, max); } If the line long int n; is changed into unsigned int n; the program runs in 0.68 sec instead of 0.79, so there is some shortcut. If changed into signed int n; there is a veeery long, perhaps infinite loop. Greetings Alexander -- http://mail.python.org/mailman/listinfo/python-list