poj1142

分解质因数

#include <iostream>
#include <cmath>
using namespace std;

int sum(int n)
{
    int        ans = 0;

    while (n > 0)
    {
        ans += n % 10;
        n /= 10;
    }
    return ans;
}

bool work(int n)
{
    int        i, temp, ans1, ans2;

    ans1 = sum(n);
    temp = n;
    i = 2;
    ans2 = 0;
    while (i <= sqrt(double(n)))
    {
        if (n % i == 0)
        {
            n /= i;
            ans2 += sum(i);
        }
        else
            i++;
    }
    ans2 += sum(n);
    if (ans1 == ans2 && temp != n)
        return true;
    else
        return false;
}

int main()
{
    int        n;

    //freopen("t.txt", "r", stdin);
    while (cin >> n && n != 0)
    {
        n++;
        while (!work(n))
            n++;
        cout << n << endl;
    }
    return 0;
}
View Code

 

posted @ 2013-07-20 17:57  金海峰  阅读(230)  评论(0编辑  收藏  举报