Identify Smith Numbers
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cmath>
using namespace std;
long long int f(long long int n){
long long int sum=0;
while(n){
sum+=n%10;
n/=10;
}
return sum;
}
int ff(long long n){
for (int i=2;i<=sqrt(n);i++){
if (n%i==0){
return 0;
}
}
return 1;
}
int a[1000];
int main(){
long long int n;
scanf("%lld",&n);
if (ff(n)){
printf("0\n");
}
else
{
long long sum=f(n);
long long m = n;
long long int xx=0;
for(int i = 2; i < m;)
{
if(ff(i) && n % i == 0)
{
a[xx++] = i;
n = n / i;
if(ff(n))
{
a[xx++] = n;
break;
}
}
else
i++;
}
long long aa = 0;
for(int i = 0; i < xx; i++)
{
while(a[i])
{
aa = aa + a[i] % 10;
a[i] /= 10;
}
}
if (sum==aa){
printf("1\n");
}
else{
printf("0\n");
}
}
return 0;
}