題目原文: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;
}
}