RosettaCodeData/Task/Smith-numbers/Maple/smith-numbers.maple

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);