分配N阶乘的A的最高功率是多少?

时间:2016-03-19 08:28:17

标签: java

我试图通过找出最大的素数因子并将数字除以素因子的幂来在codefights.com上解决这个问题。

int highestPower(int N, int A) {
int B =A, j=0,c=0, p=0,x;

for(int i = 2; i<=A; i++) {
    if( A%i == 0) {
        p = i>p ? i:p;
        A/=i;
        --i;
    }
    if(i*i > A && B==A) {
        p = B;
        break;
    }
}

for(;(x = N/((int)Math.pow(p,++j))) > 0; )
    c+=x;
return c;

}

Input:

0<N<10^9
1<A<10^9

但是这种方法在某些测试用例中会失败。一个这样的测试用例是:

N:100
A:1024
Output:97
Expected Output:9

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

最后一个for循环计算除以N的p的幂,但是如果A的因子分解中的p的幂大于1,则它与所需答案不同。在给定的示例中,您计算​​2 ^ 97除以100!,但它与您的要求无关。至少你应该用A的因式分解p(在这种情况下为10),但我不知道在一般情况下它是否足够。