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. Эта функция возвращает значение true, если конкретный nCr делится на число p. Пусть это будет оптимизировано дальше.Может ли это быть дополнительно оптимизировано
Хотя это не оптимизация, а 'а> Ь + c' уже возвращаются, что ваш метод должен возвращать, так что вы можете просто сделать' return a> b + c' –
Я хотел бы добавить еще одну вещь здесь ... вы не должны использовать double для выполнения своих вычислений, а вместо этого используйте десятичный тип. Десятичные будут точно определять ваши результаты. Также правильно объявляйте свои переменные - double a = 0.0m; – Dinesh
@ DnshPly9 Я не думаю, что переключение на 'decimal' будет оптимизацией. – Marlon