> The second deviation is that since most names are constants, Really? Does that mean you don't use literals, to save the time required to convert them to integers? Isn't that done at compile time?
So, instead of doing the Collatz Conjecture as while a>1: f = gmpy.scan1(a,0) if f>0: a = a >> f else: a = a*3 + 1 You would do this? zed = 0 one = 1 two = 2 twe = 3 while a>one: f = gmpy.scan1(a,zed) if f>zed: a = a >> f else: a = a*twe + one Does this really save any time? Now, it's a different story if you're using the gmpy module. You DON'T want to use literals in loops involving gmpy, because they would have to be coerced to .mpz's on every pass through the loop. In that case, you DO want to use constants as opposed to literals: ZED = gmpy.mpz(0) ONE = gmpy.mpz(1) TWO = gmpy.mpz(2) TWE = gmpy.mpz(3) while a>ONE: f = gmpy.scan1(a,0) # int used here, so it can be a literal if f>ZED: a = a >> f else: a = a*TWE + ONE And yes, the time savings can be tremendous, especially when 'a' has over 50,000 decimal digits. . I do not follow PEP > 8's recommendation to use uppercase names of constants. In fact almost no > Python > code does, Mine does when I use gmpy. Otherwise, the notion that "most names are constants" is generally false. -- http://mail.python.org/mailman/listinfo/python-list