নাম্বার থিওরিতে কত যে মজার মজার নাম্বার আছে …! আজ এমনই একটা মজার নাম্বার নিয়ে আলোচনা করব
আর্মস্ট্রং নাম্বার
আর্মস্ট্রং নাম্বার হল এমন একটি নাম্বার যে নাম্বার এর প্রত্যেকটা আলদা আলাদা নাম্বার ঘনের (cube)যোগফল ওই নাম্বার । একটা সহজ উদাহারন দেই ৩৭১ স্বাভাবিক একটা সংখ্যা । এর প্রত্যেকটা ডিজিটকে আলাদা ঘন করে যোগ করলে কি দারায়
3^3=27
7^3=343
1^3=1
তাহলে ২৭+৩৪৩+১ সমান দ্বারায় ৩৭১ তার মানে এটা একটা আর্মস্ট্রং নাম্বার ।
এখন দেখাযাক এটার কোড কিভাবে করতে হবে
#include<stdio.h>
int main()
{
int NumberTocheck,temp,remainder,sum=0;
printf(“Enter a number to check\n”);
scanf(“%d”,&NumberTocheck);
temp=NumberTocheck;
while(temp!=0){
remainder=temp%10;
int cube=remainder*remainder*remainder;
sum=sum+cube;
temp=temp/10;
}
if(sum==NumberTocheck)
printf(“Armstrong Number”);
else
printf(“Not Armstrong Number “);
}
এই হল আর্মস্ট্রং নাম্বার চেক করার প্রোগ্রাম
কোডটা কিভাবে কাজ করে ?
প্রথমে যে নাম্বারটাকে চেক করব সেটা নিতে হবে ।এটাকে নিয়ে কাজ করার জন্য একটা টেম্পোরারি ভারিয়াবল এ রাখতে হবে
পরে একটা লুপ চালাতে হবে । এখন দেখাযাক লুপের ভিতরে আসলে কি কাজ হয় (আসল কাজটা ত লুপের ভিতরেই হয় )
প্রথমে নাম্বারটাকে ১০ দিয়ে ভাগকরে ভাগশেষ বের করেনিলাম (প্রত্যেকটা আলাদা নাম্বার এর ঘন বের করার জন্য )
পরে প্রত্যেকটা নাম্বার এর ঘন বের করে পূর্বেরটার সাথে যোগ করতে হবে (sum=sum+cube)।
সম্পূর্ণ প্রক্রিয়াটা নিচে দেয়া হল ( বর্ণনার সুবিধার্থে একটা আর্মস্ট্রং নাম্বারকে ধরে করলাম )
ধাপ ১ঃ
remainder=371%10= 1
cube=1*1*1=1
sum=0+1=1
temp=371/10=37
ধাপ ২ঃ
remainder=37%10= 7
cube=7*7*7=343
sum=1+343=344
temp=37/10=3
ধাপ ৩ঃ
remainder=3%10= 3
cube=3*3*3=27
sum=344+27=371
temp=3/10=0
ধাপ ৩ এর পর temp=0 তাই লুপ শেষ হয়ে যাবে
পরে if condition এ এসে জাচাই করবে নাম্বার গুলোর যোগফল ইনপুট নাম্বার এর সমান কি না ?
যদি সমান হয় তাহলে নাম্বার টা আর্মস্ট্রং নাম্বার অথবা আর্মস্ট্রং নয়