zoukankan      html  css  js  c++  java
  • POJ1142 HDU1333 ZOJ1133 Smith Numbers【质因数分解+素数判定+数位之和】

    问题链接POJ1142 HDU1333 ZOJ1133 Smith Numbers

    题意简述:寻找大于输入数并且最接近的Smith Numbers。

    问题分析

    Smith Numbers数不是素数,其各位数字之和等于其各个因子的各位数字之和。。

    程序说明

    函数digitsum()用于计算数的各位数字之和。

    函数fact_digitsum用于计算数的各个因子的数字之和,但是若为素数则返回-1。函数中对因子的数量进行了计数,若为1则数为素数。


    AC的C++语言程序如下

    /* POJ1142 HDU1333 ZOJ1133 Smith Numbers */
    
    #include <iostream>
    
    using namespace std;
    
    const int BASE10 = 10;
    
    inline int digitsum(int n)
    {
        int sum = 0;
        while(n) {
            sum += n % BASE10;
            n /= BASE10;
        }
        return sum;
    }
    
    int fact_digitsum(int n)
    {
        int digitsum2 = 0, count = 0;
        for(int i=2; i*i<=n; i++) {
            while(n % i == 0) {
                count++;
                digitsum2 += digitsum(i);
                n /= i;
            }
        }
        if(n > 1 && count)
            digitsum2 += digitsum(n);
        if(count == 0)
            digitsum2 = -1;
    
        return digitsum2;
    }
    
    int main()
    {
        int n;
    
        while(cin >> n && n) {
            for(n++; ; n++) {
                if(digitsum(n) == fact_digitsum(n)) {
                    cout << n << endl;
                    break;
                }
            }
        }
    
        return 0;
    }



  • 相关阅读:
    四、网络层
    四、路由协议
    四、最长前缀匹配
    四、路由转发
    四、分片
    五、TCP的可靠传输你怎么看
    存储周期
    判断素数
    需求说明书的内容
    块级元素——盒子模型1
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563759.html
Copyright © 2011-2022 走看看