मान लीजिए कि हमारे पास एक संख्या n है। हमें इन शर्तों के आधार पर n का भाजक ज्ञात करना है कि कौन सा बेहतर है:हमारे पास दो संख्याएँ p और q हैं, जिनके अंकों का योग बड़ी संख्या में होता है, उन्हें दूसरी संख्या से बेहतर कहा जाता है। जब अंकों का योग समान हो, तो छोटी संख्या बेहतर होती है।
इसलिए, यदि इनपुट n =180 की तरह है, तो आउटपुट 9 होगा क्योंकि भाजक हैं [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]। तो वह संख्या जिसका अंकों का योग अधिकतम है [9, 18, 36, 45, 90, 180], लेकिन उनमें से 9 बेहतर संख्या है क्योंकि इसका मान छोटा है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- div :=1, md :=1
- 2 से n की श्रेणी में i के लिए, करें
- k :=i
- अगर n mod i> 0, तो
- अगले पुनरावृत्ति के लिए जाएं
- s :=0
- जबकि k> 0, करें
- s :=s + k mod 10
- k :=k / 10
- अगर एस> एमडी, तो
- एमडी:=एस
- div :=i
- रिटर्न डिव
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
def solve(n): div = 1 md = 1 for i in range(2, n + 1): k = i if n % i > 0: continue s = 0 while k > 0: s += k % 10 k /= 10 if s > md: md = s div = i return div n = 180 print(solve(n))
इनपुट
180
आउटपुट
9