almost_divisors.sf 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 21 September 2018
  4. # https://github.com/trizen
  5. # Generate the almost divisors of a given integer.
  6. func almost_divisors(n) {
  7. var factors = n.factor
  8. var common_divisors = Bag()
  9. for p in factors, r in [-1, +1], d in divisors(p+r) {
  10. common_divisors << d
  11. }
  12. var A = Set()
  13. var factors_len = factors.len
  14. for d,c in (common_divisors) {
  15. A << Num(d) if (c >= factors_len)
  16. }
  17. return A.sort
  18. }
  19. #var n = 11934770651841535961
  20. var n = 11611908222638446277
  21. for d in (almost_divisors(n)) {
  22. say "n / #{d} ≈ #{n/d}"
  23. }
  24. __END__
  25. n / 1 ≈ 11611908222638446277
  26. n / 2 ≈ 5805954111319223138.5
  27. n / 3 ≈ 3870636074212815425.66666666666666666666666666666666666666666666667
  28. n / 4 ≈ 2902977055659611569.25
  29. n / 6 ≈ 1935318037106407712.83333333333333333333333333333333333333333333333
  30. n / 9 ≈ 1290212024737605141.88888888888888888888888888888888888888888888889
  31. n / 18 ≈ 645106012368802570.944444444444444444444444444444444444444444444444
  32. n / 313 ≈ 37098748315138805.99680511182108626198083067092651757188498402556
  33. n / 626 ≈ 18549374157569402.99840255591054313099041533546325878594249201278
  34. n / 939 ≈ 12366249438379601.99893503727369542066027689030883919062832800852
  35. n / 1878 ≈ 6183124719189800.99946751863684771033013844515441959531416400426
  36. n / 2817 ≈ 4122083146126533.99964501242456514022009229676961306354277600284
  37. n / 5634 ≈ 2061041573063266.99982250621228257011004614838480653177138800142
  38. n / 427681 ≈ 27150862962437.99999766180868451018399227461589362164791047533
  39. n / 855362 ≈ 13575431481218.99999883090434225509199613730794681082395523767
  40. n / 1283043 ≈ 9050287654145.999999220602894836727997424871964540549303491777
  41. n / 2566086 ≈ 4525143827072.99999961030144741836399871243598227027465174589
  42. n / 3849129 ≈ 3016762551381.99999974020096494557599914162398818018310116393
  43. n / 7698258 ≈ 1508381275690.99999987010048247278799957081199409009155058196
  44. n / 133864153 ≈ 86743971125.999999992529740206102824256468421385372677030273
  45. n / 267728306 ≈ 43371985562.99999999626487010305141212823421069268633851514
  46. n / 401592459 ≈ 28914657041.99999999750991340203427475215614046179089234342
  47. n / 803184918 ≈ 14457328520.99999999875495670101713737607807023089544617171
  48. n / 1204777377 ≈ 9638219013.999999999169971134011424917385380153930297447808
  49. n / 2409554754 ≈ 4819109506.9999999995849855670057124586926900769651487239