poj1142 Smith Numbers

来源:互联网 发布:python服务器端开发 编辑:程序博客网 时间:2024/06/05 15:31

题目大意:

一个数他的各个数字的和等于他的各个质因子的各个数字的和,这个数就称为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 9901int 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);}}


0 0