可以进一步优化

时间:2012-03-10 07:38:42

标签: c# optimization

public static bool IsDivisible(double p, double n, double r, double k)
    {
        double x = p;
        double a = 0.0, b = 0.0, c = 0.0;
        while (x <= n)
        {
            a += Math.Floor(n / x);
            if (x <= r)
                b += Math.Floor(r / x);
            if (x <= k)
                c += Math.Floor(k / x);
            x *= p;
        }
        return a > b + c ? true : false;
    }

以上代码检查nCr是否可被数字整除,p.k为n-r。 如果特定的nCr可以被数字p整除,则该函数返回true。可以进一步优化。

1 个答案:

答案 0 :(得分:4)

您的输入是否总是正整数?如果是这样,那么您可以使用int代替double并使用整数除法而不是浮点除法来提高性能。然后你也不需要调用Math.Floor,因为整数除法会自动截断你的结果。

您还可以将最后一行简化为:

return a > b + c;