007 10001st prime -- v2.sf 444 B

1234567891011121314151617181920212223242526
  1. #!/usr/bin/ruby
  2. # Daniel "Trizen" Șuteu
  3. # Date: 09 October 2017
  4. # https://github.com/trizen
  5. # https://projecteuler.net/problem=7
  6. # Runtime: 0.757s (previously: 1.226s)
  7. var n = 10_001
  8. var upper = int(n*(n.log + n.log.log))
  9. var sieve = [true, true]
  10. for i in (2..upper.isqrt) {
  11. if (!sieve[i]) {
  12. for j in (i.sqr .. upper -> by(i)) {
  13. sieve[j] = true
  14. }
  15. }
  16. }
  17. sieve.map_kv! {|k,v| v ? () : k }
  18. say sieve[n-1]