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

पायथन में जांचें कि किसी बड़ी संख्या का कोई क्रमपरिवर्तन 8 से विभाज्य है या नहीं


मान लीजिए हमें एक विशाल संख्या दी गई है और हमें यह पता लगाना है कि क्या संख्या के अंकों का कोई क्रमपरिवर्तन 8 से विभाज्य है। संख्या हमें स्ट्रिंग प्रारूप में प्रदान की जाती है।

उदाहरण के लिए, यदि input_num = "4696984" है, तो आउटपुट "Divisible by eight" होगा।

हल करने का तरीका

इस समस्या को हल करने के लिए, हम संख्या के अंकों के साथ संभव सभी तीन-अंकों के क्रमपरिवर्तनों की जांच करेंगे और देखेंगे कि क्या वे संख्या के किसी सर्व-अंक क्रमपरिवर्तन में हो सकते हैं। यदि आठ से विभाज्य एक तीन-अंकीय क्रमपरिवर्तन संख्या के किसी सर्व-अंक क्रमपरिवर्तन के अंत में होता है, तो हम कहेंगे कि वह क्रमपरिवर्तन 8 से विभाज्य है।

  1. यदि input_num की लंबाई < 3:
    • यदि input_num % 8 == 0, तो True लौटाएं
    • उल्टी स्ट्रिंग भी जांचें
    • False लौटाएं
  2. temp_arr := आकार 10 की सूची 0 से प्रारंभ (अंकों की आवृत्ति)
  3. input_num के प्रत्येक अंक की आवृत्ति गिनें
  4. 104 से 999 तक 8 की छलांग में लूप (सभी 3-अंकीय 8 के गुणक):
    • उस गुणक के अंकों की आवृत्ति occurrences में गिनें
    • यदि occurrences के सभी मान temp_arr में संबंधित मानों ≤ हैं, तो True लौटाएं
  5. False लौटाएं

उदाहरण

def solve(input_num):
    if len(input_num) < 3:
        if int(input_num) % 8 == 0:
            return True
        input_num = input_num[::-1]
        if int(input_num) % 8 == 0:
            return True
        return False
    temp_arr = [0] * 10
    for count in range(len(input_num)):
        temp_arr[int(input_num[count])] += 1
    for count in range(104, 1000, 8):
        temp = count
        occurrences = [0] * 10
        occurrences[temp % 10] += 1
        temp //= 10
        occurrences[temp % 10] += 1
        temp //= 10
        occurrences[temp % 10] += 1
        temp = count
        if occurrences[temp % 10] > temp_arr[temp % 10]:
            continue
        temp //= 10
        if occurrences[temp % 10] > temp_arr[temp % 10]:
            continue
        temp //= 10
        if occurrences[temp % 10] > temp_arr[temp % 10]:
            continue
        return True
    return False

if solve("4696984"):
    print("Divisible by eight")
else:
    print("Not divisible by eight")

इनपुट

4696984

आउटपुट

Divisible by eight
  1. - पायथन में जांचें कि कोई बड़ी संख्या 19 से विभाज्य है या नहीं

    मान लीजिए हमें एक बड़ी संख्या दी गई है और हमें यह जांचना है कि वह संख्या 19 से विभाज्य है या नहीं। उदाहरण के लिए, यदि इनपुट 86982 है, तो आउटपुट विभाज्य होगा। समाधान दृष्टिकोण हम इस समस्या को पुनरावृत्ति योग विधि (repeated addition method) का उपयोग करके हल करेंगे। इस विधि में हम संख्या के अंतिम अंक

  1. - पायथन में जांचें कि कोई बड़ी संख्या 17 से विभाज्य है या नहीं

    मान लीजिए हमें एक संख्या दी गई है और हमें यह जांचना है कि वह संख्या 17 से विभाज्य है या नहीं। उदाहरण के लिए, यदि इनपुट 99943 है, तो आउटपुट विभाज्य होगा। समाधान दृष्टिकोण हम इस समस्या को पुनरावृत्ति घटाव विधि (repeated subtraction method) का उपयोग करके हल करेंगे। इस विधि में हम संख्या के अंतिम अंक

  1. - पायथन में अकिलीज़ नंबर की जांच

    समस्या विवरण एक संख्या n दी गई है, जांचें कि क्या यह अकिलीज़ नंबर है। अकिलीज़ नंबर = शक्तिशाली संख्या (हर अभाज्य गुणक p के लिए, p² भी विभाजित करता है) लेकिन पूर्ण घात नहीं (a^b रूप में नहीं)। उदाहरण इनपुट: 108 आउटपुट: True 108 = 2² × 3³ — दोनों अभाज्य गुणकों के वर्ग विभाजित करते हैं, लेकिन 108 पूर्