您的位置:首页 > 其它

poj1142 Smith Numbers

2015-01-21 16:08 323 查看
题目大意:

一个数他的各个数字的和等于他的各个质因子的各个数字的和,这个数就称为smith Number

求n开始的下一个Smith Number。

思路:

暴力搜。

#include <iostream>
#include <cmath>
#include <stdio.h>
#include <map>
#include <algorithm>
using namespace std;
#define LL long long
#define MAX 100000
#define MD 9901

int sum(int num)
{
if(num/10==0)
return num;
return sum(num/10)+num%10;
}
int primsum(int n)
{
int i=2;
int ret=0;
for(;i*i<=n;++i)
while (n%i==0)
{
ret+=sum(i);
n/=i;
}
if(n!=1)
{
if(ret)
ret+=sum(n);
else return -1;
}
return ret ;
}
bool issmith(int n)
{
int d=sum(n);
int p=primsum(n);
if(p==-1||d!=p)
return false;
return true;
}
int main()
{
int n;
while (scanf("%d",&n),n)
{
n++;
while (!issmith(n))
n++;
printf("%d\n",n);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: