prog.pl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/perl
  2. # Decimal expansion of the constant c in the asymptotic formula for the partial sums of the bi-unitary divisors sum function, A307159(k) ~ c*k^2.
  3. # https://oeis.org/A307160
  4. # 0.752838741002294311801556197690282913198572814948
  5. # 0.752838741002294311572374955376000133818337852677
  6. # 0.752838741002294311555548926599819789478084421742
  7. # 0.752838741002294311551120791965465252262943489011
  8. # 0.752838741002294311548876231316823899297951999561
  9. # 0.752838741002294311547545121955305818925329236541
  10. # 0.752838741002294311547055129027092424491079871979 # up to 144900000 (10^8)
  11. # 0.999999999999999999999998000000010000000099999999
  12. # 0.99999999999999999999
  13. use 5.014;
  14. use ntheory qw(:all);
  15. use Math::MPFR;
  16. use Math::GMPz;
  17. use Math::GMPq;
  18. my $prod = Math::MPFR::Rmpfr_init2(192);
  19. my $t = Math::MPFR::Rmpfr_init2(192);
  20. Math::MPFR::Rmpfr_set_ui($prod, 1, 0);
  21. my $p = Math::GMPz->new(1);
  22. my $q = Math::GMPq->new(1);
  23. my $k = 0;
  24. forprimes {
  25. # ((p - 1) (p^5 + p^4 + p^3 - p^2 + 1))/p^6
  26. Math::GMPz::Rmpz_set_ui($p, $_);
  27. my $z1 = ($p-1) * ($p**5 + $p**4 + $p**3 - $p**2 + 1);
  28. my $z2 = $p**6;
  29. Math::GMPq::Rmpq_set_num($q, $z1);
  30. Math::GMPq::Rmpq_set_den($q, $z2);
  31. Math::GMPq::Rmpq_canonicalize($q);
  32. Math::MPFR::Rmpfr_mul_q($prod, $prod, $q, 0);
  33. if (++$k % 1e5 == 0) {
  34. say $prod;
  35. }
  36. #Math::MPFR::Rmpfr_set_ui(
  37. #(1 - 2/p^3 + 1/p^4 + 1/p^5 - 1/p^6)
  38. } 1e8;