058 Spiral primes.pl 521 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Website: https://github.com/trizen
  5. # https://projecteuler.net/problem=58
  6. # Runtime: 0.040s
  7. use 5.010;
  8. use strict;
  9. use ntheory qw(is_prime);
  10. my $i = 1;
  11. my $primes = 0;
  12. while (1) {
  13. $primes += grep { is_prime($_) } (
  14. 3 + $i * (4 * $i - 6),
  15. 5 + $i * (4 * $i - 8),
  16. 7 + $i * (4 * $i - 10)
  17. );
  18. if ($i > 4 and ($primes / (4 * ($i - 1) + 1) < 0.1)) {
  19. say 2 * ($i - 1) + 1;
  20. last;
  21. }
  22. ++$i;
  23. }