#!/usr/bin/perl -w my $ref = sym(10000); for my $key (sort {$a <=> $b} keys %$ref) { printf "%-10d%d\n",$key,$ref->{$key}; } sub sym { for(1..shift) { sub s{$_[0]==join"",reverse split//,$_[0]} if(&s($_)&&&s($_**2)){$s{$_}=$_**2} } \%s; } #### 1 1 2 4 3 9 11 121 22 484 101 10201 111 12321 121 14641 202 40804 212 44944 1001 1002001 1111 1234321 2002 4008004