060 Prime pair sets.pl 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # Date: 16 August 2016
  4. # License: GPLv3
  5. # Website: https://github.com/trizen
  6. # https://projecteuler.net/problem=60
  7. # Runtime: 0.525s
  8. use 5.010;
  9. use strict;
  10. use ntheory qw(primes is_prime);
  11. my @primes = @{primes(10000)};
  12. my $end = $#primes;
  13. for my $i (0 .. $end-4) {
  14. my $p1 = $primes[$i];
  15. for my $j ($i+1 .. $end-3) {
  16. my $p2 = $primes[$j];
  17. ( is_prime("$p1$p2")
  18. and is_prime("$p2$p1"))
  19. || next;
  20. for my $k ($j+1 .. $end-2) {
  21. my $p3 = $primes[$k];
  22. ( is_prime("$p1$p3")
  23. and is_prime("$p3$p1")
  24. and is_prime("$p2$p3")
  25. and is_prime("$p3$p2"))
  26. || next;
  27. for my $l ($k+1 .. $end-1) {
  28. my $p4 = $primes[$l];
  29. ( is_prime("$p1$p4")
  30. and is_prime("$p4$p1")
  31. and is_prime("$p2$p4")
  32. and is_prime("$p4$p2")
  33. and is_prime("$p3$p4")
  34. and is_prime("$p4$p3"))
  35. || next;
  36. for my $m ($l+1 .. $end) {
  37. my $p5 = $primes[$m];
  38. ( is_prime("$p1$p5")
  39. and is_prime("$p5$p1")
  40. and is_prime("$p2$p5")
  41. and is_prime("$p5$p2")
  42. and is_prime("$p3$p5")
  43. and is_prime("$p5$p3")
  44. and is_prime("$p4$p5")
  45. and is_prime("$p5$p4"))
  46. || next;
  47. say "sum($p1, $p2, $p3, $p4, $p5) = ", $p1 + $p2 + $p3 + $p4 + $p5;
  48. exit;
  49. }
  50. }
  51. }
  52. }
  53. }