तीन बुनियादी ब्लॉक: क्रम, शाखा, लूप
हर एल्गोरिदम तीन ब्लॉक से बनता है:
- क्रम: कदम 1, फिर कदम 2, फिर कदम 3।
- शाखा:
if शर्त: A else: B। A या B में से एक ही चलता है। - लूप:
while शर्त: कदम। शर्त सही रहने तक कदम बार-बार चलते हैं।
शर्त ऐसा सवाल है जिसका उत्तर सही या ग़लत होता है, जैसे n % 2 == 0। % चिह्न भाग का शेषफल देता है (7 % 2 = 1)।
मिश्रित शर्त, अधिकतम और न्यूनतम
शर्तें and (दोनों सही), or (कम से कम एक सही) और not (उत्तर पलटे) से जोड़ो। x 10 और 20 के बीच है, यह जाँचने के लिए लिखो x >= 10 and x <= 20।
दो संख्याओं में अधिकतम: if a > b: max = a else: max = b। तीन में: पहले max = a; फिर if b > max: max = b; फिर if c > max: max = c। न्यूनतम के लिए चिह्न पलट दो। जाँच: 7, 12, 9 में अधिकतम 12 और न्यूनतम 7 है।
गणित में शाखा: द्विघात समीकरण
a x² + b x + c = 0 के लिए विविक्तकर D = b² - 4ac निकालो। फिर शाखा बनाओ: D > 0 हो तो दो वास्तविक मूल x = (-b ± √D) / (2a); D = 0 हो तो एक मूल -b / (2a); D < 0 हो तो कोई वास्तविक मूल नहीं। उदाहरण: x² - 5x + 6 = 0 में D = 25 - 24 = 1, इसलिए मूल (5 ± 1)/2 = 3 और 2।
संख्याओं पर लूप: अंकों के काम
दो औज़ार: n % 10 आख़िरी अंक देता है और n // 10 (पूर्ण-संख्या भाग) आख़िरी अंक हटा देता है। n के अंकों का योग:
sum = 0; while n > 0: sum = sum + n % 10; n = n // 10
347 का हिसाब: अंतिम अंक 7 (योग 7, n 34), फिर 4 (योग 11, n 3), फिर 3 (योग 14, n 0)। रुको। योग 14 है। इसी लूप से अंक गिन सकते हैं, संख्या उलट सकते हैं या पैलिंड्रोम जाँच सकते हैं।
अभाज्य संख्या की जाँच
n > 1 अभाज्य है अगर उसे केवल 1 और n ही बाँटते हैं। d को 2 से बढ़ाओ जब तक d × d <= n; अगर n % d == 0 हो तो n अभाज्य नहीं। लूप बिना भाजक के पूरा हो जाए तो n अभाज्य है। √n तक ही क्यों? अगर n = p × q, तो p, q में से एक √n से बड़ा नहीं होता। 29 के लिए 2, 3, 4, 5 जाँचो (5 × 5 = 25 <= 29): कोई नहीं बाँटता, तो 29 अभाज्य है। 21 में 3 मिलते ही रुक जाते हैं।
यूक्लिड का GCD एल्गोरिदम
GCD (महत्तम समापवर्तक) वह सबसे बड़ी संख्या है जो दोनों को बाँटे। यूक्लिड का विचार: बड़ी संख्या की जगह (बड़ी - छोटी) रख दो तो GCD नहीं बदलता। संख्याएँ बराबर होने तक करते रहो। उदाहरण (18, 12): (6, 12) फिर (6, 6)। GCD = 6। तेज़ रूप शेषफल से चलता है: while b != 0: a, b = b, a % b। (48, 18) के लिए: (18, 12), (12, 6), (6, 0), इसलिए GCD 6।
करके देखो
करके देखो: कागज़ पर 4829 के अंकों का लूप तालिका में चलाओ: कॉलम n, अंतिम अंक, योग। फिर 3D के अंक-लूप में “अगला कदम” दबाकर हर पंक्ति जाँचो। पहले अनुमान लगाओ: क्या योग 20 से बड़ा होगा?
मुख्य सूत्र और परिभाषाएँ
- if शर्त: A else: B
- while शर्त: कदम (रुकने का रास्ता ज़रूरी)
- आख़िरी अंक = n % 10; अंक हटाना: n = n // 10
- D = b² − 4ac; D > 0: 2 मूल, D = 0: 1 मूल, D < 0: कोई नहीं
- अभाज्य: 2 ≤ d ≤ √n में कोई भाजक नहीं
- GCD(a, b) = GCD(b, a % b); b = 0 पर रुको
हल किए गए उदाहरण
1. वह शर्त लिखो जो संख्या x के 10 और 20 के बीच (दोनों सहित) होने पर ही सही हो।
x >= 10 and x <= 20। दोनों भाग सही होने चाहिए, इसलिए “and” चाहिए।
2. 7, 12 और 9 में से अधिकतम शुरू-और-तुलना विधि से निकालो।
max = 7। 12 > 7 है, इसलिए max = 12। 9 > 12 ग़लत है, max 12 ही रहा। उत्तर: 12।
3. लूप से 347 के अंकों का योग निकालो।
योग 0। 347: अंतिम अंक 7, योग 7, n 34। फिर 4: योग 11, n 3। फिर 3: योग 14, n 0। रुको। योग = 14।
4. क्या 29 अभाज्य है?
d = 2, 3, 4, 5 जाँचो (5×5 = 25 <= 29)। 29 % 2 = 1, % 3 = 2, % 4 = 1, % 5 = 4। कोई 0 नहीं, इसलिए 29 अभाज्य है।
5. शेषफल से 48 और 18 का GCD निकालो।
(48, 18) → (18, 12) → (12, 6) → (6, 0)। GCD = 6।
6. शाखा नियम से x² - 5x + 6 = 0 हल करो।
D = 25 - 24 = 1 > 0, इसलिए दो मूल: (5 + 1)/2 = 3 और (5 - 1)/2 = 2।
आम गलतियाँ
- = और == में गड़बड़ी। एक मान रखता है, दूसरा तुलना करता है।
- कभी न रुकने वाला लूप: लूप के अंदर n बदलना भूल गए, इसलिए शर्त हमेशा सही रही।
- जहाँ “and” चाहिए वहाँ “or” लिखना (जैसे “x >= 10 or x <= 20” हमेशा सही रहता है)।
- 1 को अभाज्य कहना। अभाज्य के ठीक दो भाजक होते हैं, इसलिए 1 अभाज्य नहीं है और सबसे छोटी अभाज्य संख्या 2 है।