பைத்தான் படிக்கலாம் வாங்க – 20 – நீங்களும் துப்பறியலாம்!

அண்ணன் தம்பிகளான வியன், பாரி இருவரின் வயதை எப்படிக் கண்டுபிடிப்பது? கதையில் நமக்குக் கிடைத்திருக்கும் துப்புகள்[தடயங்கள்] என்னென்ன?

1. வியன் பள்ளிக்கூடம் போகும் சிறுவன். பாரி, இன்னும் பள்ளிக்குப் போகாத மழலை.
2. வியனுக்கும் பாரிக்கும் இடையில் வயது வேறுபாடு ஆறு வயது.
3. இரண்டு பேரின் வயதிற்குமான பொது வகுத்தி வியனின் வயது.

இந்தக் குறிப்புகளின் படி,

பாரி வியன்
1           7
2           8
3           9
4         10

இந்த வயதுகளில் ஏதேனும் ஒன்றில் தான் இருவரும் இருக்க வேண்டும். இந்த நான்கு கணிப்புகளில், முதல் கணிப்பையும் (1,7) கடைசிக் கணிப்பையும் விட்டு விடலாம். ஏனென்றால், ஒன்று என்பது எல்லா எண்ணையும் வகுக்கும். எனவே, அதைப் பொது வகுத்தியாக எடுத்துக் கொள்ள முடியாது. கடைசிக் கணிப்பில் 4,10 ஆகிய இரண்டின் பொது வகுத்தி 10 இல்லை. எனவே அதையும் நீக்கி விடலாம்.

‘நீங்களாகவே முதல் கணிப்பையும் கடைசிக்கணிப்பையும் நீக்கி விடலாம்’ என்று சொல்கிறீர்கள். எப்படிச் சொல்கிறீர்கள் என்று கொஞ்சம் சொல்லுங்கள் என்று கேட்கிறீர்களா?. பொது வகுத்தி என்பதே மறந்து விட்டது என்று சொல்கிறீர்களா? அப்படிச் சொல்பவராக நீங்கள் இருந்தால் அடுத்த தலைப்பைப் படியுங்கள். இல்லை, நான் கணக்கில் புலி தான்! என்று சொன்னால் நீங்கள் அடுத்த தலைப்பைத் [‘பைத்தான் வகுத்தி’] தொடருங்கள்.

பொது வகுத்தி:
பொது வகுத்தி[Common Divisor]யைப் பார்ப்பதற்கு முன்னால், வகுத்தி[Divisor] என்றால் என்னவென்று பார்த்து விடுவோம். ஓர் எண்ணின் வகுத்தி என்பது அந்த எண் எந்தெந்த எண்களால் வகுபடும் என்பது ஆகும். எடுத்துக்காட்டாக, 100 என்றோர் எண்ணை எடுத்துக் கொள்வோம்.

100இன் வகுத்திகள் –> 1, 2, 4, 5, 10, 20, 25, 50, 100
ஆகியன ஆகும். இதில் 1 எல்லா எண்களையும் வகுக்கும். 100 என்பது கொடுக்கப்பட்ட எண். ஆகவே, ஓர் எண் கொடுத்து அவ்வெண்ணின் மிகப்பெரிய வகுத்தி எது எனக் கேட்டால், கொடுக்கப்பட்ட அதே எண் தான் எனப் பதில் சொல்லி விடலாம். அதற்கு முந்தைய மிகப்பெரிய வகுத்தி எது எனக் கேட்டால், அவ்வெண்ணின் பாதியாக இருக்கலாம். [சில நேரங்களில் இல்லாமலும் இருக்கலாம்]. இன்னும் சில எடுத்துக்காட்டுகளைப் பார்ப்போமே!
4இன் வகுத்திகள் –> 1,2,4 [இங்கே மிகப்பெரிய வகுத்தி 4,அதாவது கொடுக்கப்பட்ட எண், 2 என்பது 4இன் பாதி]
9இன் வகுத்திகள் –> 1,3,9 [இங்கே மிகப்பெரிய வகுத்தி 9, அதாவது கொடுக்கப்பட்ட எண், 3 இரண்டாவது மிகப்பெரிய வகுத்தி]
16இன் வகுத்திகள் –> 1,2,4,8,16 [இங்கே மிகப்பெரிய வகுத்தி 16,அதாவது கொடுக்கப்பட்ட எண், 8 என்பது 8இன் பாதி]
25இன் வகுத்திகள் –> 1,5,25 [இங்கே மிகப்பெரிய வகுத்தி 25,அதாவது கொடுக்கப்பட்ட எண், 5 இரண்டாவது மிகப்பெரிய வகுத்தி]

இந்த எடுத்துக்காட்டுகளில் 9, 25 ஆகிய எண்களின் இரண்டாவது பெரிய வகுத்தியாக அவற்றின் பாதி வரவில்லை என்பதைக் கவனத்தில் கொள்க. சரி, இப்போது பொது வகுத்திக் கணக்குக்கு வருவோம். பொது வகுத்தி என்பது இரண்டு எண்கள் கொடுக்கப்பட்டால் அவை இரண்டுக்கும் பொதுவான வகுத்தியாகும். 100, 120 ஆகிய இரண்டு எண்களின் வகுத்திகளை முதலில் எழுதுவோம்.
100 இன் வகுத்திகள் –> 1, 2, 4, 5, 10, 20, 25, 50, 100
120 இன் வகுத்திகள் –> 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 24, 30, 40, 60, 120

இவற்றில் பொதுவான வகுத்திகள் எவையெவை? 1, 2, 4, 5, 10, 20. இவற்றுள், 1 எப்போதுமே வகுத்தியாக எல்லா எண்களுக்குமே வரும் அல்லவா? எனவே, அதை விட்டு விடுவோம். மீதி எண்களாகிய, 2, 4, 5, 10, 20 ஆகியன பொது வகுத்திகள்.

பைத்தானில் வகுத்தி:
இரண்டு எண்களுக்கான பொதுவகுத்தியை இப்போது பைத்தானில் கண்டுபிடிக்க வேண்டும். முன்னொரு காலத்தில் if படித்தது நினைவிருக்கிறதா? % [மாடுலஸ்] நினைவிருக்கிறதா? இரண்டும் நினைவில் இருந்தாலே போதும். இந்த நிரலைத் தொடங்கி விடலாம்.


எண் = 100
if எண்%2 == 0:
print("வகுத்தி", 2)
if எண்%3 == 0:
print("வகுத்தி", 3)
if எண்%4 == 0:
print("வகுத்தி", 4)
if எண்%5 == 0:
print("வகுத்தி", 5)

view raw

multiple_if

hosted with ❤ by GitHub

இப்படியே கொடுக்கப்பட்ட எண்ணின் பாதி வரை [ஏன் பாதி வரை மட்டும்? மேலே படித்தது நினைவிருக்கிறது அல்லவா!] if எழுத வேண்டும். அத்தனை if எழுதுவதற்கான எளிதான மாற்று வழி தான் while எனப் படித்திருக்கிறோமே! அதை இங்கு செய்து விட வேண்டியது தான்!


எண் = 100
வகுக்கும்_எண் = 2 #வகுத்தியை இரண்டில் இருந்து தொடங்குகிறோம்.
while வகுக்கும்_எண் <=எண்//2: #பாதி வரை போகப் போகிறோம்.
if எண்%வகுக்கும்_எண்==0:
print("வகுத்தி",வகுக்கும்_எண்)
வகுக்கும்_எண்+=1 #அடுத்த எண்ணைப் பார்க்கிறோம்.

view raw

vakuththi.py

hosted with ❤ by GitHub

பொது வகுத்தி:
சரி, இப்போது வகுத்தி கண்டுபிடித்து விட்டோம்! பொது வகுத்தியை எப்படிக் கண்டுபிடிப்பது? பொது வகுத்தி என்பது இரண்டு எண்களுக்குமான பொது அல்லவா? இரண்டு எண்களையும் எழுதி வைத்து, இரண்டையும் வகுக்கிறதா என்று பார்த்து விடுவோம்.


எண்1 = 100
எண்2 = 120
வகுக்கும்_எண் = 2
while வகுக்கும்_எண்<=120:
if எண்1%வகுக்கும்_எண்==0 and எண்2%வகுக்கும்_எண் ==0:
print("பொது வகுத்தி", வகுக்கும்_எண்)
வகுக்கும்_எண்+=1

இங்கே ஐந்தாவது வரியில் ஏன் and சேர்த்திருக்கிறோம் என்பது புரிகிறது அல்லவா? நூற்றை’யும்’ வகுக்க வேண்டும், நூற்று இருபதை’யும்’ வகுக்க வேண்டும் எனச் சொல்கிறோமே! அந்த ‘உம்’ தான் பைத்தானில் and.

இந்த நிரலை நண்பர் ஒருவரிடம் விளக்கிச் சொல்லிக் கொண்டிருந்தேன். அவருக்கு இந்த நிரலில் ஓர் ஐயம்(அதாங்க, சந்தேகம்!). நான்காவது வரியில் ஏன் <=க்குப் பிறகு 120 கொடுத்தீர்கள்? அங்கே 100 கொடுத்திருக்கலாமே! என்கிறார். அவர் சொல்வது சரியா? இல்லை, 120 தான் சரியா? பேசுவோமா?

இரண்டு எண்களின் பொது வகுத்தி என்னும் போது முதலில் ஒரு செய்தியை நினைவில் நிறுத்திக் கொள்ள வேண்டும். ஓர் எண்ணின் மிகப் பெரிய வகுத்தி என்பது கொடுக்கப்பட்ட அவ்வெண் தான்! அதைத் தாண்டி ஒரு வகுத்தி அந்த எண்ணுக்குக் கிடையாது. [இதை முன்னரே பேசியிருக்கிறோம், மறந்திருந்தால் மீண்டும் வாசித்துப் பாருங்கள்.] எனவே, இரண்டு எண்கள் கொடுக்கப்பட்டால், அவற்றுள் சிறிய எண் வரை தான் பொது வகுத்தி கிடைக்கும். 10உம், 1200உம் கொடுக்கப்பட்ட எண்கள் என்று வைத்துக் கொள்ளுங்களேன். இரண்டுக்குமான பொது வகுத்திகளைத் தேடினால், 10 வரை தானே கிடைக்கும். அதைத் தான் சொல்கிறேன்.

எனவே, நம்முடைய நிரலில் நண்பர் சொல்வது (தான்) சரி! நாமும் அப்படியே எந்த எண் சிறிய எண் எனப் பார்த்து அதை நிரலில் மாற்றி விடுவோம்.


எண்1 = 100
எண்2 = 120
வகுக்கும்_எண் = 2
while வகுக்கும்_எண்<=100:
if எண்1%வகுக்கும்_எண்==0 and எண்2%வகுக்கும்_எண் ==0:
print("பொது வகுத்தி", வகுக்கும்_எண்)
வகுக்கும்_எண்+=1

இந்த நிரல், 100க்கும் 120க்கும் மட்டும் பொருந்துகிறது. பொதுவாக எந்த இரண்டு எண்கள் கொடுக்கப்பட்டாலும் வேலை செய்ய வேண்டும் என்றால்,


எண்1 = int(input("எண்ணைச் சொல்லுங்கள்: "))
எண்2 = int(input("எண்ணைச் சொல்லுங்கள்: "))
வகுக்கும்_எண் = 2
if எண்1<எண்2:
சின்ன_எண் = எண்1
elif எண்2<எண்1:
சின்ன_எண் = எண்2
while வகுக்கும்_எண்<=சின்ன_எண்:
if எண்1%வகுக்கும்_எண்==0 and எண்2%வகுக்கும்_எண் ==0:
print("பொது வகுத்தி", வகுக்கும்_எண்)
வகுக்கும்_எண்+=1

என மாற்றி எழுத வேண்டும். இதில் முதல் இரண்டு வரிகள் புரியவில்லை என்றாலும் அச்சம் வேண்டாம். பயனரிடம் இருந்து உள்ளீடுகளை(inputs) வாங்கி அதை எண்ணாக(int) மாற்றும் வேலை அது என்னும் புரிதலை மட்டும் வைத்துக் கொள்ளுங்கள். பிறகு அதை விரிவாகப் பேசுவோம்.

டெர்னரி ஆப்பரேட்டர்[Ternary Operator]:
இங்கே நான்காம் வரியில் இருந்து ஏழாம் வரி வரை எழுதியிருக்கிறோமே if, elif – அதைச் சுருக்கி,
சின்ன_எண் = எண்1 if எண்1<எண்2 else எண்2

என்று ஒரே வரியில் எழுதலாம். அதாவது, எண்1, எண்2ஐவிடச் சின்னது என்றால், அதைச் சின்ன_எண்ணில் பொருத்துங்கள். இல்லையென்றால், எண்2ஐச் சின்ன_எண்ணில் பொருத்துங்கள் என்று பொருள். இதை Ternary Operator என்பார்கள்.

இப்போது நம்முடைய நிரல், கீழே இருப்பது போல மாறியிருக்கும்.


எண்1 = int(input("எண்ணைச் சொல்லுங்கள்: "))
எண்2 = int(input("எண்ணைச் சொல்லுங்கள்: "))
வகுக்கும்_எண் = 2
சின்ன_எண் = எண்1 if எண்1<எண்2 else எண்2
while வகுக்கும்_எண்<=சின்ன_எண்:
if எண்1%வகுக்கும்_எண்==0 and எண்2%வகுக்கும்_எண் ==0:
print("பொது வகுத்தி", வகுக்கும்_எண்)
வகுக்கும்_எண்+=1

சரி, இப்போது பாரி, வியன் கதைக்கு வருவோம். பாரியின் வயதுக்கும் வியனின் வயதுக்கும் ஒரே பொது வகுத்தி.

1) முதலில் பாரியின் வயது 1 எனக் கொண்டால் வியனின் வயது 7. எண் ஒன்று எல்லா எண்களாலும் வகுபடும் என்பதால் இதை விட்டு விடலாம்.
2) பாரியின் வயது 2 எனக் கொண்டால் வியனின் வயது 8. 2, 8 ஆகியவற்றின் பொது வகுத்தி 2 மட்டுமே. எனவே இதுவே பாரி, வியன் ஆகியோரின் வயதாக இருக்கலாம்.
3) பாரியின் வயது 3 எனக் கொண்டால் வியனின் வயது 9. 3, 9 ஆகியவற்றின் பொது வகுத்தி 3 மட்டுமே. எனவே, பாரி, வியனின் வயது ஆகியோரின் வயதாக இருக்கலாம்.

இவை இரண்டில் முதலிலேயே 2உம் 8உம் வந்து விடுவதால், அவற்றையே சிறந்த தேர்வாக எடுத்துக் கொள்ளலாம்.

இப்போது பார்த்திருப்பது, பொது வகுத்திகளுக்கான நிரல், இதில் இருந்து மீப்பெரு பொது வகுத்தி [மீ.பெ.வ], மீச்சிறு மடங்கு[மீ.சி.ம] பார்ப்போமா! மீ.பெ.வ[HCF], மீ.சி.ம[LCM] என்பவை எங்கோ கேட்ட நினைவிருக்கிறதா? ஆறாம் வகுப்பு, ஏழாம் வகுப்பில் படித்த கணிதப் பாடம் தான்! தூசி தட்டி நினைவில் வையுங்கள். சந்திப்போம்.

– கி. முத்துராமலிங்கம், பயிலகம், சென்னை.

 

 

%d bloggers like this: