मैं सबसे बड़ा आम कारक खोजने की कोशिश कर रहा हूं।पायथन जबकि लूप, और (&) ऑपरेटर काम नहीं कर रहा है
मैंने एक खराब (ऑपरेशन गहन) एल्गोरिदम लिखा है जो कम मूल्य को कम करता है, यह देखने के लिए% का उपयोग करके जांच करता है कि यह संख्यात्मक और denominator दोनों को समान रूप से विभाजित करता है, अगर यह प्रोग्राम से बाहर निकलता है। हालांकि, मेरा समय लूप ऑपरेटर का उपयोग नहीं कर रहा है, और इस प्रकार संख्यात्मक विभाजित होने पर यह बंद हो जाता है, भले ही यह सही उत्तर न हो।
संख्या मैं उपयोग कर रहा हूँ 54 और 42, सही GCD कर रहे हैं (सबसे बड़ा आम भाजक) है 6.
#heres a simple algorithm to find the greatest common denominator:
iterations = 0; #used to calculate number of times while loop is executed
u = 54; v= 42; d = v-1; #u is the numerator, v is the denominator, d is the number decremented by one
while ((v % d !=0) & (u % d != 0)): #while both numerator AND denominator cannot be evenly divided by the decremented number
d -= 1 #decrement the number by one
print d #print the number decremented
iterations +=1 #add 1 to the count of iterations in while loop
print "the gcd is " +str(d) #should be 6 when the number can evenly divide both
print "the number of iterations was " +str(iterations) #display times it took algorithm to complete
जवाब मैं हो रही है 27 है, जो मुझसे कहता है एक बार यह 27 तक पहुँच जाता है और विभाजित कर सकते हैं 54/27 समान रूप से, यह बंद हो जाता है। अजगर में थोड़ी देर में एक ऑपरेटर का उपयोग करने के तरीके पर कोई विचार?
धन्यवाद!
इनपुट के लिए धन्यवाद, मैंने कीवर्ड का उपयोग करने की कोशिश की और, लेकिन मुझे अभी भी 27 मिल गया है, क्या आपको एक ही परिणाम मिल रहा है? – Blakedallen
@ ब्लैकलेन: 'या' का उपयोग करने का प्रयास करें। –
आप सही हैं यह बेहद अक्षम है! मेरा मानना है कि यूक्लिड का एल्गोरिदम बहुत बेहतर है। – Blakedallen