17 lines
438 B
Plaintext
17 lines
438 B
Plaintext
isSmith := proc(n::posint)
|
|
local factors, sumofDigits, sumofFactorDigits, x;
|
|
if isprime(n) then
|
|
return false;
|
|
else
|
|
sumofDigits := add(x, x = convert(n, base, 10));
|
|
sumofFactorDigits := add(map(x -> op(convert(x, base, 10)), [op(NumberTheory:-PrimeFactors(n))]));
|
|
return evalb(sumofDigits = sumofFactorDigits);
|
|
end if;
|
|
end proc:
|
|
|
|
findSmith := proc(n::posint)
|
|
return select(isSmith, [seq(1 .. n - 1)]);
|
|
end proc:
|
|
|
|
findSmith(10000);
|