Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में अभाज्य गुणनखंडों की संख्या दिए जाने पर अच्छे भाजकों की अधिकतम संख्या ज्ञात करें

अभाज्य गुणनखंडों की अधिकतम संख्या pf दी गई है। एक संख्या n बनाएं जिसके अभाज्य गुणनखंड ≤ pf हों, जिससे अच्छे भाजकों की संख्या अधिकतम हो। अच्छा भाजक = n के प्रत्येक अभाज्य गुणनखंड से विभाज्य भाजक।

गणितीय विश्लेषण

मान लीजिए n = p₁^a₁ × p₂^a₂ × ... × pₖ^aₖ जहां Σaᵢ ≤ pf।

अच्छे भाजक वे हैं जो प्रत्येक pᵢ से विभाज्य हैं, यानी रूप p₁^b₁ × ... × pₖ^bₖ जहां 1 ≤ bᵢ ≤ aᵢ।

अच्छे भाजकों की संख्या = a₁ × a₂ × ... × aₖ (गुणनखंड)। इसे अधिकतम करना है जब Σaᵢ = pf दिया हो।

इष्टतम रणनीति

  • गुणनफल अधिकतम होता है जब संख्याएं 3 के करीब हों (AM-GM असमानता)
  • इसलिए अधिकतम संभव 3 का उपयोग करें
  • शेष 0: सभी 3
  • शेष 1: एक 3 को दो 2 में बदलें (3×1 < 2×2)
  • शेष 2: एक 2 जोड़ें

Python कार्यान्वयन


def max_nice_divisors(pf):
    MOD = 10**9 + 7
    
    if pf == 1:
        return 1
    
    q, r = divmod(pf, 3)
    
    if r == 0:
        return pow(3, q, MOD)
    elif r == 1:
        # 3^(q-1) × 4
        return pow(3, q - 1, MOD) * 4 % MOD
    else:  # r == 2
        # 3^q × 2
        return pow(3, q, MOD) * 2 % MOD

# परीक्षण
print(max_nice_divisors(5))  # 6
print(max_nice_divisors(1))  # 1
print(max_nice_divisors(2))  # 2
print(max_nice_divisors(3))  # 3
print(max_nice_divisors(4))  # 4 (2×2)
print(max_nice_divisors(6))  # 9 (3×3)
print(max_nice_divisors(7))  # 12 (3×2×2)

आउटपुट


6
1
2
3
4
9
12

उदाहरण pf=5

इष्टतम विभाजन: 3 + 2 = 5 → घातांक [3, 2] → अच्छे भाजक = 3×2 = 6

संख्या: n = p₁³ × p₂² (जैसे 2³ × 5² = 8 × 25 = 200)

अच्छे भाजक: 10, 20, 40, 50, 100, 200 (6 भाजक)

जटिलता

  • समय: O(log pf) - मॉड्यूलर एक्सपोनेंशिएशन
  • स्थान: O(1)

मुख्य बिंदु

  • समस्या पूर्णांक विभाजन में अधिकतम गुणनफल तक कम हो जाती है
  • 3 इष्टतम आधार है (e ≈ 2.718 के निकटतम पूर्णांक)
  • शेष 1 के लिए 3+1 → 2+2 समायोजन
  • pow(base, exp, mod) कुशल मॉड्यूलर एक्सपोनेंशिएशन
  1. पायथन प्रोग्राम: आर्मस्ट्रांग नंबर चेक करें पायथन प्रोग्राम: आर्मस्ट्रांग नंबर चेक करें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक इंटीजर n दिए जाने पर, हमें जांचना होगा कि दिया गया इंटीजर आर्मस्ट्रांग नंबर है या नहीं। एक पॉजिटिव इंटीजर को n क्रम का आर्मस्ट्रांग नंबर कहा जाता है यदि abcd... = a^n + b^n + c^n +

  1. पायथन प्रोग्राम: N-वां फाइबोनैचि नंबर पायथन प्रोग्राम: N-वां फाइबोनैचि नंबर

    इस लेख में, हम nth फाइबोनैचि नंबर की गणना करेंगे। एक फाइबोनैचि नंबर नीचे दिए गए पुनरावृत्ति संबंध द्वारा परिभाषित किया जाता है: Fn = Fn-1 + Fn-2 F₀ = 0 और F₁ = 1 के साथ। पहले कुछ फाइबोनैचि नंबर हैं: 0, 1, 1, 2, 3, 5, 8, 13, ................ हम रिकर्सन और डायनामिक प्रोग्रामिंग की विधि का उपयोग करके

  1. पायथन प्रोग्राम: N-वां कैटलन नंबर पायथन प्रोग्राम: N-वां कैटलन नंबर

    इस लेख में, हम nth कैटलन नंबर की गणना के बारे में सीखेंगे। कैटलन नंबर्स प्राकृतिक संख्याओं का एक क्रम है जो रिकर्सिव फॉर्मूला द्वारा परिभाषित है: c₀ = 1 और cₙ₊₁ = Σᵢ₌₀ⁿ cᵢ cₙ₋ᵢ n ≥ 0 के लिए n = 0, 1, 2, 3, ... के लिए पहले कुछ कैटलन नंबर हैं: 1, 1, 2, 5, 14, 42, 132, 429, ................ कैटलन नंबर