• Source
    1. #include <iostream>
    2. #include <vector>
    3. #include <cmath>
    4. using namespace std;
    5. int sumDig(int x)
    6. {
    7. int ans=0;
    8. while(x!=0)
    9. {
    10. ans+=x%10;
    11. x/=10;
    12. }
    13. return ans;
    14. }
    15. bool isPrime(int x)
    16. {
    17. if(x==1)
    18. return false;
    19. for(int i=2;i<=ceil(sqrt(static_cast<double>(x)));++i)
    20. if(x%i==0)
    21. return false;
    22. return true;
    23. }
    24. const int N=1000000;
    25. bool mark[N+1000];
    26. int main()
    27. {
    28. int n;
    29. cin>>n;
    30. for(int i=2;i<=N/2;++i)
    31. {
    32. int b=i+i;
    33. while(b<=N)
    34. {
    35. mark[b]=true;
    36. b+=i;
    37. }
    38. }
    39. vector<int> primes;
    40. for(int i=2;i<=N;++i)
    41. if(!mark[i])
    42. primes.push_back(i);
    43. int sum1=sumDig(n);
    44. int sum2=0;
    45. for(int i=0;i<primes.size();++i)
    46. if(n%primes[i]==0)
    47. {
    48.  
    49. while(n%primes[i]==0)
    50. {
    51. n/=primes[i];
    52. sum2+=sumDig(primes[i]);
    53. }
    54. }
    55. if(isPrime(n))
    56. sum2+=sumDig(n);
    57. if(sum1==sum2)
    58. cout<<1;
    59. else
    60. cout<<0;
    61.  
    62.  
    63.  
    64. }