http://acm.whu.edu.cn/land/problem/detail?problem_id=1165
#include<iostream>
#include<cmath>
using namespace std ;
#define INT long long
INT Sum( INT x )
{
INT sum = 0 ;
while( x )
{
sum += x % 10 ;
x /= 10 ;
}
return sum ;
}
bool smithnumber( INT number )
{
INT i = 2 ;
INT temp = 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( sum == tempsum && temp != number )
return true ;
else
return false ;
}
int main()
{
INT n ;
while( true )
{
cin >> n ;
if( n == 0 )
break ;
if( smithnumber( n ) )
cout << "Yes" << endl ;
else
cout << "No" << endl ;
}
return 0 ;
}