#!/usr/bin/perl -w use strict; my $biggest_number = 987654321; BIGNUMBER: while ($biggest_number) { # Discard all odd numbers (not divisible by 2) if ($biggest_number % 2) { $biggest_number--; next BIGNUMBER; } my @divisors = split //, $biggest_number; # Discard all numbers containing zero if (grep {$_ eq "0"} @divisors) { $biggest_number--; next BIGNUMBER; } # Discard all numbers with repeated digits my %seen = (); for (@divisors) { if ($seen{$_}++) { $biggest_number--; next BIGNUMBER; } } # Get this far, give it a try print "Trying $biggest_number..."; DIVISORS: for (@divisors) { if ($biggest_number % $_) { $biggest_number--; print "Failed!\n"; next BIGNUMBER; } } print "Success!!\n"; for (@divisors) { print "$biggest_number / $_ = ", $biggest_number / $_, "\n"; } exit; } #### Trying 9867312...Success!! 9867312 / 9 = 1096368 9867312 / 8 = 1233414 9867312 / 6 = 1644552 9867312 / 7 = 1409616 9867312 / 3 = 3289104 9867312 / 1 = 9867312 9867312 / 2 = 4933656 real 384m53.120s user 382m59.960s sys 0m14.600s