题目原文:http://community.topcoder.com/stat?c=problem_statement&pm=11519
- A和B是互质的正整数
- A*B是某个数的阶乘
- A小于B
- 如果N不是一个质数,那么N和(N-1)!必然具有相同的质因子,可以把N唯一地分解成两个因子X和Y,使得X与A具有相同的质因子,Y与B具有相同的质因子。令A'=X*A, B'=Y*B, 则A' 和B'仍然互质。由于X和Y的生成具有唯一性,所以A/B可以唯一的映射到一个A'/B',并且不同的A/B肯定映射到不同的A'/B',而每一个A'/B'都可以找到一个这样的映射关系。所以N!时的factor faction与(N-1)!时的factor faction具有完全映射的关系。
- 如果N是一个质数,那么N与A和B均互质,并且N不能再被分解。所以可以有两种方案:A'=A*N, B'=B或A'=A, B'=b*N。
- 如果n不是质数 : f(n) = f(n-1)
- 如果n是质数:f(n)=2*f(n-1)
public class EllysFractions
{
boolean prime( int n){
if (n == 1){
return false ;
}
for (int i = 2; i * i <= n; ++i){
if (n % i == 0){
return false ;
}
}
return true ;
}
public long getCount( int N)
{
long res = 1;
long count = 1;
for (int i = 2; i <= N; ++i){
if (prime(i)){
count = count * 2;
}
res += count;
}
return res / 2;
}
}