切换到宽版
  • 6746阅读
  • 1回复

特殊的合数(史密斯数) [复制链接]

上一主题 下一主题
离线hzx2008
 
只看楼主 倒序阅读 0 发表于: 2007-11-23

(tsdhs.pas/tsdhs.in/tsdhs.out)
题目描述:
有这样一种合数,它的各位数字之和等于它所有质因数的各位数字之和。
例如:合数57366的各位数字之和为5+7+3+6+6=27,如果将57366分解成质因数相乘:57366=2*3*3*3187,把这些质因数各位数字相加2+3+3+3+1+8+7=27,其和也为27。所以57366,即是满足条件的合数。
输入一个自然数n(n<=10^9),如果这样的合数输出“YES”,如果不满足条件的合数则输出“NO”,如果不是合数输出“-1”。


输入样例:57366
样例输出:YES

输入样例:2
样例输出:-1


离线legend
只看该作者 1 发表于: 2008-04-24
int prime[N],num[N]={0},i,n,pn=0;
for(i=2;i*i<n;i++)
    if(n%i==0)
    {
        prime[pn]=i;
        while(n%i==0)
        {
            num[pn]++;
            n=n/i;
        }
        pn++;
    }
if(n!=1)        //如果n==27==3^3,那么当执行完for循环时,n==1。此时,无需再把n==1放入prime[]中。
{
    prime[pn]=n;
    num[pn]++;
}
快速回复
限100 字节
 
上一个 下一个