मान लीजिए कि तीन चर N, R और P हैं। N और R का उपयोग N प्राप्त करने के लिए किया जाता है सी<उप>आरउप> और P एक अभाज्य है। हमें यह पता लगाना है कि क्या N सी<उप>आरउप> P से विभाज्य है। मान लीजिए हमारे पास कुछ संख्याएँ N =7, R =2 और P =3 हैं, तो 7 सी<उप>2उप> =21, यह 3 से विभाज्य है, इसलिए आउटपुट सत्य होगा।
हम जानते हैं कि N सी<उप>आरउप> =एन! / (आर! * (एन - आर)!)! हम पी की सबसे बड़ी शक्ति के लिए लीजेंड्रे फॉर्मूला का उपयोग करेंगे, जो किसी भी एन!, आर को विभाजित करता है! और (एन - आर)! एनसीआर को पी से विभाज्य होने के लिए, शर्त एन है!> आर! + (एन - आर)!
उदाहरण
#include <iostream>
using namespace std;
int getPower(int n, int p) {
int pow = 0;
while (n) {
n /= p;
pow += n;
}
return pow;
}
bool isDivisibleByP(int n, int r, int p) {
// Find the highest powers of p
// that divide n!, r! and (n - r)!
int x1 = getPower(n, p);
int x2 = getPower(r, p);
int x3 = getPower(n - r, p);
if (x1 > x2 + x3)
return true;
return false;
}
int main() {
int n = 7, r = 2, p = 7;
if (isDivisibleByP(n, r, p))
cout << "nCr is divisible by P";
else
cout << "nCr is not divisible by P";
} आउटपुट
nCr is divisible by P