Taxes (哥德巴赫猜想)

 Taxes

 CodeForces - 735D 

Mr. Funt now lives in a country with a very specific tax laws. The total income of mr. Funt during this year is equal to n (n ≥ 2) burles and the amount of tax he has to pay is calculated as the maximum divisor of n (not equal to n, of course). For example, if n = 6 then Funt has to pay 3 burles, while for n = 25 he needs to pay 5and if n = 2 he pays only 1 burle.

As mr. Funt is a very opportunistic person he wants to cheat a bit. In particular, he wants to split the initial n in several parts n1 + n2 + ... + nk = n (here k is arbitrary, even k = 1 is allowed) and pay the taxes for each part separately. He can't make some part equal to 1 because it will reveal him. So, the condition ni ≥ 2should hold for all i from 1 to k.

Ostap Bender wonders, how many money Funt has to pay (i.e. minimal) if he chooses and optimal way to split n in parts.

Input

The first line of the input contains a single integer n (2 ≤ n ≤ 2·109) — the total year income of mr. Funt.

Output

Print one integer — minimum possible number of burles that mr. Funt has to pay as a tax.

Examples

Input
4
Output
2
Input
27
Output
3
题解: 哥德巴赫猜想

内容大概是如下两点:

1、所有大于2的偶数可以被分解成两个素数。

2、所有大于7的奇数可以被分解成三个素数。(n-3)为偶数,3是一个素数,所以是三个。

所以知道这个猜想之后就变得简单了:

1、偶数:n为2,答案是1,否则答案是2.

2、奇数:首先,n最少可以拆成三个素数,还有两种情况要考虑:n本身是一个素数的话答案就是1,n-2是一个素数答案就是2(一个奇数可以拆成一个偶数+一个奇数,偶数只有2是素数)。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 const int maxn=1e5+10;
 6 bool check(int n)
 7 {
 8     for(int i=2;i*i<=n;i++)
 9     {
10         if(n%i==0)
11             return false;
12     }
13     return true;
14 }
15 int main()
16 {
17     int n;
18     cin>>n;
19     int ans;
20     if(n&1)
21     {
22         if(check(n))
23             ans=1;
24         else if(check(n-2))
25             ans=2;
26         else 
27             ans=3;
28     }
29     else
30     {
31         if(n==2)
32             ans=1;
33         else
34             ans=2;
35     }
36     printf("%d\n",ans);
37 return 0;
38 }

 

posted @ 2018-09-08 00:15  *starry*  阅读(306)  评论(0编辑  收藏  举报