मान लीजिए हमारे पास एक सरणी digits है जिसमें केवल अंक हैं। हमें दिए गए अंकों से न्यूनतम संभव संख्या बनानी है और फिर जांचना है कि इस संख्या के पहले और अंतिम अंक लेकर बनी संख्याएं अभाज्य हैं या नहीं। हम संख्या स्वयं और फिर अभाज्य संख्याएं प्रिंट करेंगे।
उदाहरण के लिए, यदि digits = [5, 2, 1, 7] है, तो आउटपुट होगा: 1257 सबसे छोटी संख्या है। पहले और अंतिम अंक से बनी संख्याएं 17 और 71 हैं, दोनों अभाज्य हैं।
हल करने का तरीका
- digits_freq := अंकों की आवृत्तियों का मैप
- number := खाली स्ट्रिंग
- 0 से 9 तक लूप चलाकर आवृत्ति के अनुसार अंक जोड़ें (यह स्वतः सॉर्ट हो जाएगा)
- num := number के पहले और अंतिम अंक से बनी संख्या
- rev := number के अंतिम और पहले अंक से बनी संख्या
- यदि num और rev दोनों अभाज्य हैं, तो number, num, rev लौटाएं
- यदि केवल num अभाज्य है, तो number, num लौटाएं
- यदि केवल rev अभाज्य है, तो number, rev लौटाएं
- अन्यथा False लौटाएं
उदाहरण कोड
from collections import defaultdict
def isPrime(num):
if num > 1:
for i in range(2, num):
if num % i == 0:
return False
return True
return False
def solve(arr):
digits_freq = defaultdict(int)
for i in range(len(arr)):
digits_freq[arr[i]] += 1
number = ""
for i in range(0, 10):
for j in range(digits_freq[i]):
number += str(i)
num = int(number[0] + number[-1])
rev = int(number[-1] + number[0])
if isPrime(num) and isPrime(rev):
return int(number), num, rev
elif isPrime(num):
return number, num
elif isPrime(rev):
return number, rev
else:
return False
digits = [5, 2, 1, 7]
print(solve(digits))
इनपुट
[5, 2, 1, 7]
आउटपुट
(1257, 17, 71)