UVA 10791

题目链接

不知道为什么,我用cin,cout就是过不了。。。改成scanf过了。。。

还是我居然理解错题意了,已经不能用看错了。。。至少两个数字,我理解成两个数字了,还写了个爆搜。。。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <string>
 4 #include <cmath>
 5 #include <ctime>
 6 #include <cstdlib>
 7 #include <iostream>
 8 using namespace std;
 9 #define LL long long
10 #define MOD 1000000007
11 int prim[1000001];
12 int o[1000001];
13 LL que[5001];
14 int main()
15 {
16     int cas = 1,i,j,num = 0,m;
17     LL n,temp;
18     for(i = 2;i <= 1000000;i ++)
19     {
20         if(!o[i])
21         {
22             prim[num++] = i;
23             for(j = i+i;j <= 1000000;j += i)
24             o[j] = 1;
25         }
26     }
27     while(scanf("%lld",&n)!=EOF)
28     {
29         if(!n) break;
30         printf("Case %d: ",cas++);
31         if(n == 1)
32         {
33             printf("2
");
34             continue;
35         }
36         m = 0;
37         for(i = 0;i < num;i ++)
38         {
39             if(n == 1) break;
40             if(n%prim[i] == 0)
41             {
42                 temp = 1;
43                 while(n%prim[i] == 0)
44                 {
45                     temp *= prim[i];
46                     n /= prim[i];
47                 }
48                 que[m++] = temp;
49             }
50         }
51         if(n != 1)
52         que[m++] = n;
53         LL minz = 0;
54         if(m == 1)
55         {
56             printf("%lld
",que[0]+1);
57             continue;
58         }
59         for(i = 0;i < m;i ++)
60         {
61             minz += que[i];
62         }
63         printf("%lld
",minz);
64     }
65     return 0;
66 }

原文地址:https://www.cnblogs.com/naix-x/p/3382689.html