prop_sigma.sf 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 16 August 2019
  4. # https://github.com/trizen
  5. # Generate all the divisors d of n, such that d <= k.
  6. # Aliquot sequence starting at 276.
  7. # https://oeis.org/A008892
  8. func divisors_le (n, k) {
  9. var d = [1]
  10. var pp = [
  11. [2,1],
  12. [3,2],
  13. [97,1],
  14. [197,1],
  15. [75081990941 ,1],
  16. [88493269493,1]
  17. [1384830977701,1]
  18. [12561733388625059,1]
  19. [1678129073086710180895595636080546136202087961,1]
  20. [391364384797113642021018938141302575768663239995535008610511080253072850223856047857018826709557247961017887671,1]
  21. ]
  22. assert(pp.all{.first.is_prime})
  23. assert(pp.prod_2d {|p,k| p**k } == n)
  24. for p,e in (pp) {
  25. var r = 1
  26. d << gather {
  27. e.times {
  28. r *= p
  29. d.each { |u|
  30. take(u*r) if (u*r <= k)
  31. }
  32. }
  33. }...
  34. }
  35. d.sort
  36. }
  37. var n = 26110157458513265619034078368125391068700794099058184847372911035083675260156495372381837385445470163130669518228029490682124851301249859714720420517651878609243007545569976387750129484086482969920578568241023674
  38. say divisors_le(n,n-1).sum