(phixonline)--> with javascript_semantics function sum_digits(integer n, base=10) integer res = 0 while n do res += remainder(n,base) n = floor(n/base) end while return res end function function smith(integer n) sequence p = prime_factors(n,true,-1) if length(p)=1 then return false end if integer sp = sum(apply(p,sum_digits)), sn = sum_digits(n) return sn=sp end function sequence s = apply(filter(tagset(10000),smith),sprint) printf(1,"%d smith numbers found: %s\n",{length(s),join(shorten(s,"",8),", ")})