prime_41.pl 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 10 April 2015
  5. # https://github.com/trizen
  6. # The prime41() function.
  7. # Inspired from: https://www.youtube.com/watch?v=3K-12i0jclM
  8. # See more about this on: https://en.wikipedia.org/wiki/Formula_for_primes
  9. use 5.010;
  10. use strict;
  11. use warnings;
  12. use ntheory qw(is_prime divisors);
  13. #
  14. ## A general form of: n^2 - n + 41
  15. #
  16. sub p41 {
  17. my ($x, $y) = @_;
  18. # $x: Nth number in the sequence
  19. # $y: position in the sequence relative to 41
  20. ## Simple:
  21. # $x**2 - $x + 41;
  22. ## General:
  23. $x**2 + (2 * $x * $y) - $x + $y**2 - $y + 41;
  24. }
  25. foreach my $i (0 .. 100) {
  26. my $n = p41($i, 1);
  27. if (is_prime($n)) {
  28. say "$i. $n - prime";
  29. }
  30. else {
  31. say "$i. $n - not prime (factors: ", join(', ', grep { $_ != 1 and $_ != $n } divisors($n)), ")";
  32. }
  33. }
  34. __END__
  35. => Deduced from:
  36. 43^2-2 = 1847 - prime
  37. 44^2-3 = 1933 - prime
  38. 45^2-4 = 2021 - not prime (factors: 43, 47)
  39. 46^2-5 = 2111 - prime
  40. 47^2-6 = 2203 - prime
  41. 48^2-7 = 2297 - prime
  42. 49^2-8 = 2393 - prime
  43. 50^2-9 = 2491 - not prime (factors: 47, 53)
  44. 51^2-10 = 2591 - prime
  45. 52^2-11 = 2693 - prime
  46. 53^2-12 = 2797 - prime
  47. 54^2-13 = 2903 - prime
  48. 55^2-14 = 3011 - prime
  49. 56^2-15 = 3121 - prime
  50. 57^2-16 = 3233 - not prime (factors: 53, 61)
  51. 58^2-17 = 3347 - prime
  52. 59^2-18 = 3463 - prime
  53. 60^2-19 = 3581 - prime
  54. 61^2-20 = 3701 - prime
  55. 62^2-21 = 3823 - prime
  56. 63^2-22 = 3947 - prime
  57. 64^2-23 = 4073 - prime
  58. 65^2-24 = 4201 - prime