500 Problem 500.sf 558 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/ruby
  2. # Author: Trizen
  3. # Date: 21 September 2016
  4. # Translated: 16 November 2023
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=500
  7. # Runtime: 2.753s
  8. func first_n_factors(n) {
  9. var limit = n.ilog2*n # overshoots a little bit
  10. var factors = limit.primes
  11. n.each_prime {|p|
  12. while ((p **= 2) <= limit) {
  13. factors << p
  14. }
  15. }
  16. factors.sort!
  17. factors.first(n)
  18. }
  19. var p = 1
  20. var mod = 500500507
  21. var pow = 500500
  22. for f in (first_n_factors(pow)) {
  23. p = mulmod(p, f, mod)
  24. }
  25. say p