fork(4) download
  1.  
  2. n = int(input())
  3. f = [0]*(n+1)
  4.  
  5. for i in range(2,int(n**.5)+1):
  6. if f[i] == 0: # so nguyen to
  7. for j in range(i*i,n+1,i):
  8. f[j] = i
  9.  
  10. def sumdiv(x):
  11. x_ = x
  12. d = {}
  13. while f[x] != 0:
  14. d[f[x]] = d.get(f[x],0)+1
  15. x//=f[x]
  16. d[x] = d.get(x,0)+1
  17. ans = 1
  18. for k,v in d.items():
  19. ans*=(k**(v+1)-1)//(k-1)
  20. return ans-x_
  21.  
  22. T = [ 0 if i<2 else sumdiv(i) for i in range(n+1)]
  23.  
  24. for i in range(2,n+1):
  25. if T[i]!=i and i<=T[i]<=n and T[T[i]]==i:
  26. print(i,T[i])
  27.  
  28.  
Success #stdin #stdout 3.09s 27712KB
stdin
1000000
stdout
220 284
1184 1210
2620 2924
5020 5564
6232 6368
10744 10856
12285 14595
17296 18416
63020 76084
66928 66992
67095 71145
69615 87633
79750 88730
100485 124155
122265 139815
122368 123152
141664 153176
142310 168730
171856 176336
176272 180848
185368 203432
196724 202444
280540 365084
308620 389924
319550 430402
356408 399592
437456 455344
469028 486178
503056 514736
522405 525915
600392 669688
609928 686072
624184 691256
635624 712216
643336 652664
667964 783556
726104 796696
802725 863835
879712 901424
898216 980984