http://poj.org/problem?id=1142
http://acm.hdu.edu.cn/showproblem.php?pid=1333
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
using namespace std;
int Sum( int x )
{
int sum = 0 ;
while( x )
{
sum += x % 10 ;
x /= 10 ;
}
return sum ;
}
bool smithnumber( int number )
{
int i = 2 ;
int tempnumber = number ;
int tempsum = Sum( number ) ;
int sum = 0 ;
while( i <= (int)sqrt( ( double )number ) )
{
if( number % i == 0 )
{
sum += Sum( i ) ;
number /= i ;
i = 2 ;
}
else
++i ;
}
sum += Sum(number) ;
if( tempsum == sum && number != tempnumber)
return true ;
else
return false ;
}
int main()
{
int n ;
while( true )
{
scanf( "%d" , &n );
if( n == 0 )
break ;
while( true )
{
if( smithnumber( ++n ) )
{
printf( "%d\n" , n ) ;
break ;
}
}
}
return 0 ;
}