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