182 RSA encryption.pl 702 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # Date: 13 January 2017
  4. # License: GPLv3
  5. # https://github.com/trizen
  6. # https://projecteuler.net/problem=182
  7. # Runtime: 2.149s
  8. use 5.010;
  9. use strict;
  10. use warnings;
  11. use ntheory qw(gcd powmod);
  12. my $p = 1009;
  13. my $q = 3643;
  14. my $n = ($p * $q);
  15. my $phi = ($p - 1) * ($q - 1);
  16. my $sum = 0;
  17. foreach my $e (2 .. $phi - 1) {
  18. if (gcd($e, $phi) == 1) {
  19. if ( powmod(462662, $e, $n) == 462662
  20. or powmod(73282, $e, $n) == 73282
  21. or powmod(3028, $e, $n) == 3028
  22. or powmod($p - 1, $e, $n) == $p - 1
  23. or powmod($q - 1, $e, $n) == $q - 1) {
  24. next;
  25. }
  26. $sum += $e;
  27. }
  28. }
  29. say $sum;