POJ 1142 Smith Numbers

题目出处:http://acm.pku.edu.cn/JudgeOnline/problem?id=1142

版权声明版权归作者WeiSteven所有,转载请注明! 

该程序时间为47ms 

代码
 1 #include <stdio.h>
 2 #include <math.h>
 3 bool isPrimer(long d)
 4 {
 5     if(d==2||d==3||d==5||d==7||d==11||d==13)
 6     {
 7         return true;
 8     }
 9     for(int i=2;i<=sqrt((double)d);i++)
10     {
11         if(d%i==0)
12         {
13             return false;
14         }
15     }
16     return true;
17 }
18 int getDataSum(long d)
19 {
20     int re=0;
21     while(d>0)
22     {
23         re+=d%10;
24         d/=10;
25     }
26     return re;
27 }
28 int getPrimerSum(long d)
29 {
30     int re=0;
31     for(int i=2;d>1&&i<=sqrt((double)d);)
32     {
33         if(d%i==0)
34         {
35             re+=getDataSum(i);
36             d/=i;
37         }
38         else
39         {
40             i++;
41         }
42     }
43     return re+getDataSum(d);
44 }
45 
46 int main()
47 {
48     freopen("in.txt","r",stdin);
49     long data;
50     while(scanf("%ld",&data)!=EOF&&data!=0)
51     {
52         while(++data)
53         {
54             if(!isPrimer(data)&&getDataSum(data)==getPrimerSum(data))
55             {
56                 printf("%ld\n",data);
57                 break;
58             }
59         }    
60     }
61     return 1;
62 }
原文地址:https://www.cnblogs.com/weisteve/p/1797756.html