मान लीजिए कि हमारे पास एक संख्या n है। हमें यह जांचना है कि n एक अयस्क संख्या है या नहीं। जैसा कि हम जानते हैं कि एक अयस्क संख्या एक संख्या है जिसके भाजक का एक पूर्णांक हार्मोनिक मान होता है।
इसलिए, यदि इनपुट 28 की तरह है, तो आउटपुट सही होगा क्योंकि 28 के छह भाजक हैं:[1, 2, 4, 7, 14, 28], इसलिए
चूंकि 3 एक पूर्णांक है इसलिए 28 एक अयस्क संख्या है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन परिभाषित करें get_all_div() । इसमें n . लगेगा
- div :=एक नई सूची
- i के लिए श्रेणी 1 से पूर्णांक भाग (n का वर्गमूल) में, करें
- यदि n, i से विभाज्य है, तो
- यदि (n / i) का भागफल i है, तो
- div के अंत में i डालें
- अन्यथा,
- div के अंत में i डालें
- डिव के अंत में (n / i) का भागफल डालें
- यदि (n / i) का भागफल i है, तो
- यदि n, i से विभाज्य है, तो
- रिटर्न डिव
- एक फ़ंक्शन को परिभाषित करें get_harmonic_mean() । इसमें n . लगेगा
- div :=get_all_div(n)
- कुल :=0
- लंबाई:=div का आकार
- मैं के लिए 0 से लंबाई -1 की सीमा में, करो
- कुल:=कुल + (n / div[i])
- कुल :=कुल / n
- वापसी की लंबाई / कुल
- मुख्य विधि से निम्न कार्य करें:
- मतलब:=get_harmonic_mean(n)
- यदि माध्य एक पूर्णांक है, तो
- सही लौटें
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण कोड
def get_all_div(n): div = [] for i in range(1, int(n**(0.5)) + 1): if n % i == 0: if n // i == i: div.append(i) else: div.append(i) div.append(n // i) return div def get_harmonic_mean(n): div = get_all_div(n) total = 0 length = len(div) for i in range(0, length): total += (n / div[i]) total /= n return length / total def solve(n): mean = get_harmonic_mean(n) if mean - int(mean) == 0: return True return False n = 28 print(solve(n))
इनपुट
28
आउटपुट
True