zoukankan      html  css  js  c++  java
  • poj1142Smith Numbers质因子分解

    题意:一个数不是质数,其质因子的每位加起来等于该数的每位加起来.

     1 /*
     2     题意:一个数的所有质因子的每位相加起来等于该数的每位相加起来且该数不能是质数,那么就是史密斯数
     3     tip:对于分解质因子,只需要判断到i*i <= n(百度), 否则超时.
     4 */
     5 #include <iostream>
     6 using namespace std;
     7 
     8 int GetSum(int n)
     9 {
    10     int s=0;
    11     while (n)
    12     {
    13         s += n %10;
    14         n /= 10;
    15     }
    16     return s;
    17 }
    18 
    19 bool Smith(int n)
    20 {
    21     int sum = GetSum(n);
    22     int i=2;
    23     int tsum=0;
    24     int num = n;
    25     while (i*i <= n)
    26     {
    27         if (n % i == 0)
    28         {
    29             tsum += GetSum(i);
    30             n /= i;
    31             i = 2;
    32         }
    33         else
    34             i++;
    35         if (tsum > sum)
    36             return false;
    37     }
    38     if (n == num)    //是否为质数
    39         return false;
    40     if ((tsum + GetSum(n)) == sum)
    41         return true;
    42     return false;
    43 }
    44 
    45 int main()
    46 {
    47     int n;
    48     int i;
    49     while (cin>>n && n)
    50     {
    51         for (i=n+1; ; i++)
    52         {
    53             if (Smith(i))
    54                 break;
    55         }
    56         cout<<i<<endl;
    57     }
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    密码系统的安全性
    liboqs-量子安全密码算法开源C库
    密码基础知识(1)
    同态加密
    NTL 库函数
    以太坊相关的区块链知识
    53字符流中第一个不重复的字符
    基础小知识总结
    52表示数值的字符串 记忆
    HIHOcoder编程总结
  • 原文地址:https://www.cnblogs.com/lv-2012/p/3146120.html
Copyright © 2011-2022 走看看