हर्षद संख्याएं वे संख्याएं हैं जो अपने अंकों के योग से बिल्कुल विभाज्य होती हैं। जैसे संख्या 126, यह 1+2+6 = 9 से पूरी तरह विभाज्य है।
सभी एक अंक की संख्याएं हर्षद संख्याएं हैं।
हर्षद संख्याएं अक्सर लगातार समूहों में मौजूद होती हैं जैसे [1,2,3,4,5,6,7,8,9,10], [110,111,112], [1010, 1011, 1012]।
हमारा काम एक फ़ंक्शन लिखना है जो इनपुट के रूप में एक नंबर लेता है जांचता है कि यह हर्षद संख्या है या नहीं, यदि नहीं तो -1 लौटाता है अन्यथा यह लगातार हर्षद क्लस्टर की लंबाई लौटाता है।
उदाहरण के लिए -
harshadNum(1014) = harshadNum(1015) = harshadNum(1016) = harshadNum(1017) = 4 harshadNum(1) = 10 harshadNum(12) = 1 harshadNum(23) = -1
आइए इस समस्या को दो प्रमुख फ़ंक्शन में विभाजित करें,
isHarshad() → एक नंबर num लेता है और इस आधार पर एक बूलियन लौटाता है कि संख्या हर्षद है या नहीं।
harshadNum() → मुख्य फ़ंक्शन जो वास्तविक नंबर लेता है, विभिन्न बिंदुओं पर isHarshad() को कॉल करता है और स्ट्रीक की लंबाई लौटाता है।
isHarshad फ़ंक्शन को कोड करना -
const isHarshad = (num) => { let sum = 0, temp = num; while(temp){ sum += temp % 10; temp = Math.floor(temp/10); } return num % sum === 0; }
काफी सरल पुनरावृत्त फ़ंक्शन जो एक बूलियन लौटाता है
अब आइए harshadNum() फ़ंक्शन को कोड करें -
const harshadNum = (number) => { //if the input is not harshad return -1 if(!isHarshad(number)){ return -1; } let streak = 1, prev = number-1, next = number+1; //check preceding streak while(isHarshad(prev) && prev > 0){ streak++; prev--; } //check succeeding streak while(isHarshad(next)){ streak++; next++; } return streak; }; console.log(harshadNum(1014));
उपरोक्त कोड को समझना -
जांचें कि इनपुट हर्षद है या नहीं, यदि नहीं तो फ़ंक्शन रोकें और -1 लौटाएं;
एक लूप पीछे की ओर चलाएं, एक आगे की ओर जब तक हमें हर्षद संख्याएं मिलती रहें, साथ ही स्ट्रीक को अपडेट करते रहें
अंत में स्ट्रीक लौटाएं
निम्नलिखित पूरा कोड है -
उदाहरण
const isHarshad = (num) => { let sum = 0, temp = num; while(temp){ sum += temp % 10; temp = Math.floor(temp/10); } return num % sum === 0; } const harshadNum = (number) => { //if the input is not harshad return -1 if(!isHarshad(number)){ return -1; } let streak = 1, prev = number-1, next = number+1; //check preceding streak while(isHarshad(prev) && prev > 0){ streak++; prev--; } //check succeeding streak while(isHarshad(next)){ streak++; next++; } return streak; }; console.log(harshadNum(1014));
आउटपुट
कंसोल में इस कोड का आउटपुट होगा -
4