哥德巴赫猜想

例题:4421: 交税

4421: 交税
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 246 Solved: 55
Description
阿强愉快的拿到了自己工资,可是抠门的他发现自己还要没有交税。X国采用一种奇怪的税收方式。对于工资

num,需要收的税是p,p为num的最大的除数并且p不等于num。

(ps:6的最大除数是3,25的最大除数是5,2的最大除数是1)

为了减少人们要交的税,X国又规定可以把钱分开算税,分开的个数不限,即n1 + n2 + ... + nk = n,要交的

税就是每个部分的总和。

阿强现在向你寻求帮助,给定X最少要交多少钱的税?

Input
数据的组数 T;(T<=2000)

接下来T行,每行一个数字X(2 <= X <= 2e9)

Output
对于每行X,输出最少的税Y


Sample Input
3
11
27
8
Sample Output
1
3
2
HINT
对于第三个例子8,可以分为3+5,3和5的最大除数都是1,所以答案是2

 1 int isp(int n)///素数判断方法
 2 {
 3     for(int i=2;i*i<=n;i++)
 4     {
 5         if(n%i==0) return 0;
 6     }
 7     return 1;
 8 }
 9 
10 int main() {
11     int t;
12     cin>>t;
13     while(t--)
14     {///哥德巴赫猜想:偶数变两个素数
15                      ///奇数变1或2或3个素数
16         int n;
17         cin>>n;
18         if(n==2)
19         {
20             cout<<1<<endl;
21         }
22         else if(n%2==0)
23         {
24             cout<<2<<endl;
25         }
26         else
27         {
28             if(isp(n)) cout<<1<<endl;
29             else if(isp(n-2)) cout<<2<<endl;
30             else cout<<3<<endl;
31         }
32     }
33     return 0;
34 }

 

posted @ 2019-01-20 18:20  liuyongliu  阅读(505)  评论(0编辑  收藏  举报