Boston no code gives only 74% accuracy fails 2 test cases

#include
#include

using namespace std;

bool isboston(long int n)
{
long int n1=n,n2=n,sum1=0,sum2=0,i;
while(n1!=0)
{
sum1+=n1%10;
n1/=10;
}

//finding prime factors
while(n2%2==0)
{
    sum2+=2;
    n2/=2;
}

for(i=3;i<=sqrt(n2);i+=2)
{
    while(n2%i==0)
    {
        sum2+=i;
        n2/=i;
    }
}
if(n2>2)
sum2+=n2;
if(sum1==sum2)
return true;

else
return false;

}

int main() {
long int n;
cin>>n;
cout<<isboston(n);
return 0;
}

See this discussion please Why 2 test cases not passing (boston numbers)