new.sf 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #!/usr/bin/ruby
  2. func f(n) {
  3. (1i)**(n**2)
  4. }
  5. func g(n) {
  6. 1i**bigomega(n)
  7. }
  8. func F(n, m) {
  9. sum(1..n, {|k|
  10. f(k) * faulhaber(floor(n/k), m)
  11. })
  12. }
  13. func G(n, m) {
  14. sum(1..n, {|k|
  15. g(k) * faulhaber(floor(n/k), m)
  16. })
  17. }
  18. say 20.of { F(_, 0) }.map{.re}
  19. say 20.of { F(_, 0) }.map{.im}
  20. #say 20.of { G(_, 0) }.map{.im}
  21. __END__
  22. func PF(m) { # https://oeis.org/A065469
  23. 1e3.primes.prod {|p|
  24. (1 - 1/(p**m - 1))
  25. }
  26. }
  27. func PG(m) { # https://oeis.org/A182448 Pi^2/15 = zeta(2*2) / zeta(2)
  28. #~ 1e3.primes.prod {|p|
  29. #~ #(1 - 1/(p**m - 1))
  30. #~ p**m / (p**m + 1)
  31. #~ }
  32. zeta(2*m) / zeta(m)
  33. }
  34. for k in (1..10) {
  35. #say (G(1e5, k) / faulhaber(1e5, k))
  36. #say PG(k+1)
  37. say F(1e4, k)
  38. say (faulhaber(1e4, k) * PF(k+1))
  39. say ''
  40. }
  41. #
  42. #say PG(4)
  43. __END__
  44. say 26.of {|n|
  45. n.divisors.sum{|d|
  46. f(d)
  47. } != 0 ? 1 : 0
  48. }.accumulate
  49. say 26.of {|n|
  50. n.divisors.sum{|d|
  51. g(d)
  52. }
  53. }.accumulate
  54. __END__
  55. for k in (1..100) {
  56. #k.is_powerful && say [k.factor, k.divisors.sum{|d| f(d) }]
  57. if (k.divisors.sum{|d| g(d) }) {
  58. say [k.sqrt]
  59. }
  60. }
  61. __END__
  62. say 20.of {|n|
  63. n.divisors.sum{|d|
  64. g(d)
  65. }
  66. }
  67. __END__
  68. func foo(n) {
  69. sum(1..n, {|k|
  70. k.divisors.sum{|d|
  71. f(k/d) * d
  72. }
  73. })
  74. }
  75. func bar(n) {
  76. n.divisors.sum {|d|
  77. f(n/d) * d
  78. }
  79. }
  80. func z(n) {
  81. n.divisors.sum {|d|
  82. d.divisors.sum {|d|
  83. (-1)**omega(d)
  84. } * euler_phi(n/d)
  85. }
  86. }
  87. func conj(n) {
  88. n.factor_prod{|p,e|
  89. p**e - (p**e - 1)/(p - 1)
  90. #sum(0..e.dec, {|k|
  91. # -p**k
  92. #})
  93. }
  94. }
  95. func f2(n) {
  96. sum(1..n, {|k|
  97. (-1)**omega(k) * (n//k) * (1 + n//k)
  98. }) / 2
  99. }
  100. #say 20.of(bar)
  101. for k in (1..500) {
  102. #say [bar(k), euler_phi(k), euler_phi(k) - bar(k)]
  103. print(euler_phi(k) - bar(k), ", ")
  104. }
  105. __END__
  106. for n in (1..10000) {
  107. assert_eq(bar(n), conj(n))
  108. #var t = 1e30.irand
  109. #say [z(t), conj(t)]
  110. #say conj(n.pn_primorial ** 2)
  111. }
  112. #say z(23*7)
  113. __END__
  114. say 20.of(bar).accumulate
  115. say 20.of(f2)
  116. for n in (1..10) {
  117. say (f2(10**n) / faulhaber(10**n, 1))
  118. }
  119. # sqrt(n)
  120. #say 20.of(foo)
  121. #say 20.of(bar).slice(1)
  122. #say 20.of(foo).map_cons(2, {|a,b| b-a })
  123. #say 800.of(bar)
  124. #~ for k in (1..1000) {
  125. #~ say bar(k)
  126. #~ }