1
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。可以进一步优化。这可以进一步优化
虽然它不是一种优化,'A> B + C'已返回你的方法应该返回什么,所以你可以简单地做'返回a> b + c' – 2012-03-10 07:45:02
我想在此添加一件事...您不能使用double来完成计算,而是使用十进制类型。小数点会精确地显示你的结果。同时正确地声明你的变量 - double a = 0.0m; – Dinesh 2012-03-10 08:14:48
@ DnshPly9我不认为切换到'decimal'将是一个优化。 – Marlon 2012-03-10 09:57:09