124 Ordered radicals.pl 568 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/perl
  2. # Author: Daniel "Trizen" Șuteu
  3. # License: GPLv3
  4. # Date: 22 August 2016
  5. # Website: https://github.com/trizen
  6. # https://projecteuler.net/problem=124
  7. # Runtime: 0.244s
  8. use 5.010;
  9. use strict;
  10. use integer;
  11. use ntheory qw(factor_exp is_square_free vecprod);
  12. my @list;
  13. foreach my $i (1 .. 100000) {
  14. push @list, [
  15. is_square_free($i)
  16. ? $i
  17. : vecprod(map $_->[0], factor_exp($i)),
  18. $i,
  19. ];
  20. }
  21. @list = sort {
  22. ($a->[0] <=> $b->[0])
  23. || ($a->[1] <=> $b->[1])
  24. } @list;
  25. say $list[10000 - 1][1];