Sunday, October 15, 2006

任意自然数分解为连续自然数和问题

http://blog.csdn.net/justrun2005/archive/2006/10/13/1332539.aspx


def f(x):
n = 1
while x > 0:
if x % n == 0:
yield n, x / n
x -= n
n += 1

for x in 133350, 1000000, 0xffffffff:
print x, '--------------------'
for n, v in f(x):
print n, v, '+ ...'



133350 --------------------
1 133350 + ...
3 44449 + ...
4 33336 + ...
5 26668 + ...
7 19047 + ...
12 11107 + ...
15 8883 + ...
20 6658 + ...
21 6340 + ...
25 5322 + ...
28 4749 + ...
35 3793 + ...
60 2193 + ...
75 1741 + ...
84 1546 + ...
100 1284 + ...
105 1218 + ...
127 987 + ...
140 883 + ...
175 675 + ...
300 295 + ...
381 160 + ...
420 108 + ...
508 9 + ...
1000000 --------------------
1 1000000 + ...
5 199998 + ...
25 39988 + ...
125 7938 + ...
128 7749 + ...
625 1288 + ...
640 1243 + ...
4294967295 --------------------
1 4294967295 + ...
2 2147483647 + ...
3 1431655764 + ...
5 858993457 + ...
6 715827880 + ...
10 429496725 + ...
15 286331146 + ...
17 252645127 + ...
30 143165562 + ...
34 126322551 + ...
51 84215020 + ...
85 50528985 + ...
102 42107472 + ...
170 25264429 + ...
255 16842882 + ...
257 16711807 + ...
510 8421250 + ...
514 8355711 + ...
771 5570260 + ...
1285 3341745 + ...
1542 2784552 + ...
2570 1669909 + ...
3855 1112202 + ...
4369 980871 + ...
7710 553210 + ...
8738 487159 + ...
13107 321132 + ...
21845 185689 + ...
26214 150736 + ...
43690 76461 + ...
65535 32770 + ...
65537 32767 + ...

No comments: