## Archive for March, 2011

### The eighty six non-trivial powers ≤ 2^20

Wednesday, March 30th, 2011

Tonight Jamu Kakar mentioned in IRC that a program of his had unexpectedly crashed after processing 1,048,376 items. I think it’s a useful debugging skill to have to be able to recognize numbers like that (it’s very close to 2^20). I’ve often wanted to write a tiny program to print out all the non-trivial powers, and since I have far more important and pressing things to be doing, I immediately went to write the code. At a minimum it seems prudent to recognize all powers up to 1000, and the powers of 2 to much higher. Below you have all 86 non-trivial powers up to 2^20. I don’t know them all, but I wish I did.

```  4 = 2^2                  729 = 3^6, 9^3                32768 = 2^15, 8^5
8 = 2^3                 1000 = 10^3                    38416 = 14^4
9 = 3^2                 1024 = 2^10, 4^5               46656 = 6^6
16 = 2^4, 4^2            1296 = 6^4                     50625 = 15^4
25 = 5^2                 1331 = 11^3                    59049 = 3^10, 9^5
27 = 3^3                 1728 = 12^3                    65536 = 2^16, 4^8, 16^4
32 = 2^5                 2048 = 2^11                    78125 = 5^7
36 = 6^2                 2187 = 3^7                     83521 = 17^4
49 = 7^2                 2197 = 13^3                   100000 = 10^5
64 = 2^6, 4^3, 8^2       2401 = 7^4                    104976 = 18^4
81 = 3^4, 9^2            2744 = 14^3                   117649 = 7^6
100 = 10^2                3125 = 5^5                    130321 = 19^4
121 = 11^2                3375 = 15^3                   131072 = 2^17
125 = 5^3                 4096 = 2^12, 4^6, 8^4, 16^3   160000 = 20^4
128 = 2^7                 4913 = 17^3                   161051 = 11^5
144 = 12^2                5832 = 18^3                   177147 = 3^11
169 = 13^2                6561 = 3^8, 9^4               248832 = 12^5
196 = 14^2                6859 = 19^3                   262144 = 2^18, 4^9, 8^6
216 = 6^3                 7776 = 6^5                    279936 = 6^7
225 = 15^2                8000 = 20^3                   371293 = 13^5
243 = 3^5                 8192 = 2^13                   390625 = 5^8
256 = 2^8, 4^4, 16^2     10000 = 10^4                   524288 = 2^19
289 = 17^2               14641 = 11^4                   531441 = 3^12, 9^6
324 = 18^2               15625 = 5^6                    537824 = 14^5
343 = 7^3                16384 = 2^14, 4^7              759375 = 15^5
361 = 19^2               16807 = 7^5                    823543 = 7^7
400 = 20^2               19683 = 3^9                   1000000 = 10^6
512 = 2^9, 8^3           20736 = 12^4                  1048576 = 2^20, 4^10, 16^5
625 = 5^4                28561 = 13^4
```

I produced the above with this quick hack:

``` from collections import defaultdict powers = defaultdict(list) lim = 20 for a in range(2, lim + 1):     for b in range(2, lim + 1):         n = a ** b         if n > 2 ** lim:             break         powers[n].append((a, b)) for n in sorted(powers.keys()):     print '%7d = %s' % (n,                         ', '.join('%d^%d' % (a, b)                                   for (a, b) in powers[n]))   ```