Is this a Smith number?
Python 2, 122 115 110 106 bytes



n=m=input()
s=0
for d in range(2,n):
 while n%d&lt;1:n/=d;s+=sum(map(int,`d`))
print n&lt;m&gt;s==sum(map(int,`m`))


Saved 4 bytes thanks to Dennis

Try it on ideone.com

Explanation

Reads a number on stdin and outputs True if the number is a Smith number or False if it is not.

n=m=input()                  # stores the number to be checked in n and in m
s=0                          # initializes s, the sum of the sums of digits of prime factors, to 0
for d in range(2,n):         # checks all numbers from 2 to n for prime factors
 while n%d&lt;1:                # while n is divisible by d
                             #   (to include the same prime factor more than once)
  n/=d                       # divide n by d
  s+=sum(map(int,`d`))       # add the sum of the digits of d to s
print                        # print the result: "True" if and only if
      n&lt;m                    #   n was divided at least once, i.e. n is not prime
      &gt;                      #   and m&gt;s (always true) and
      s==sum(map(int,`m`))   #   s is equal to the sum of digits of m (the input)