#!/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; }