मैं अजगर में एक संख्या के वर्गमूल को आउटपुट करने के लिए एक प्रोग्राम लिख रहा हूं। मेरा वर्तमान कोड इस तरह दिखता है:

import math
num = int(input("Enter the number for which you want the square root"))

if math.floor(math.sqrt(num)) == math.ceil(math.sqrt(num)):
    v = math.sqrt(num)
    print(f"The given number is perfect square and the square root is {v} ")
elif num <0:
    print("The square root of the given number is imaginary")
else:
    print(f"The square root of the given number is \u221A{num}") 
    #\u221A is unicode for square root symbol

मेरा वर्तमान कार्यक्रम यह जांचता है कि क्या दर्ज की गई संख्या पूर्ण वर्ग है तो वर्गमूल प्रदर्शित करता है। यदि यह एक पूर्ण वर्ग नहीं है तो यह केवल num प्रदर्शित करता है। उदाहरण के लिए यदि संख्या ३०० है, तो यह ३०० प्रदर्शित करेगा। लेकिन मैं इसे 10√3 के रूप में प्रदर्शित करना चाहता हूं। मैं यह कैसे करूं इसके बारे में कोई विचार। मुझे अपने परिणाम में कोई दशमलव नहीं चाहिए।

0
Jaskirat Singh Maskeen 30 अगस्त 2021, 07:27

2 जवाब

सबसे बढ़िया उत्तर

आप सबसे बड़ा रूट ढूंढ सकते हैं जो आपकी संख्या का विभाजक है और शेष को xxx भाग के रूप में प्रस्तुत करता है:

def root(N):
    for r in range(int(N**0.5)+1,1,-1):
        if N % (r*r) == 0:
            n = N // (r*r)
            return str(r) + f"√{n}"*(n>1)
    return f"√{N}"
        
print(root(50)) # 5√2
print(root(81)) # 9
print(root(96)) # 4√6
print(root(97)) # √97
0
Alain T. 30 अगस्त 2021, 07:57

आप sympy का उपयोग कर सकते हैं:

import sympy
sympy.init_printing(use_unicode=True)
sympy.sqrt(300)

आउटपुट:

10√3
1
Chris 30 अगस्त 2021, 07:43