Qn: Write a C++ program to find whether a given number is "Armstrong" number or not?
-By Venkatesh, Last Update On 31st May,2019 11:49 am

ஒரு number, அதன் digit-களை தனித்தனியே cube செய்து அனைத்தையும் கூட்டும்(sum) போது கிடைக்கும் number-க்கு சமமாக இருந்தால் அது "Armstrong" number. அதாவது a number is equal to sum of cube of it's digits called "Armstrong number". eg:153

153=13 + 53 + 33
153=1x1x1 + 5x5x5 + 3x3x3
153=1 + 125 + 27
153=153

முதலில் enter செய்யப்பட்ட n-ன் value-ஐ orginal என்ற ஒரு variable-க்கு assign செய்து வைத்துகொள்ள வேண்டும். அடுத்து sum=0 என்று எடுத்துகொள்ளவேண்டும்.

கொடுக்கபட்டுள்ள n-ன் value-ஐ தனி தனி digits(இலக்கங்களாக) பிரிக்கவேண்டும். அப்பொழுதுதான் அந்த digits-ஐ cube செய்ய இயலும். உதாரணதிற்கு n=153 என்று எடுத்துகொள்வோம். ஒரு number-ல் உள்ள digits-ஐ முதலில் இருந்து பிரிக்க இயலாது. கடைசியில் இருந்து தான் பிரிக்க இயலும். இபொழுது n%10 செய்தால் n-ல் உள்ள கடைசி digit 3 நமக்கு கிடைத்துவிடும். இதை digit என்ற ஒரு variable-லில் assign செய்து கொண்டு பிறகு அதை cube(digit*digit*digit அதாவது 3*3*3) செய்யவேண்டும்.

cube செய்யப்பட்ட value-ஐ sum என்ற variable-உடன் add செய்து திரும்பவும் sum என்ற variable-லே assign செய்து கொள்ளவேண்டும். என்னெனில் அடுத்தடுத்து வரக்கூடிய அனைத்து digit-களின் cube-ஐயும் add செய்துகொண்டே இருக்கவேண்டும். இதற்காகதான் முதலில் sum=0 என்று எடுத்துகொள்கிறோம்.

இப்பொழுது அடுத்த digit 5 கிடைக்கவேண்டுமெனில் n value, 15 என்று மாறவேண்டும். அப்பொழுதுதான் n%10 பயன்படுத்தும்போது 5 ஆனது கிடைக்கும். அதற்காக தான் n=n/10 என்று பயன்படுத்துகிறோம். இவை அனைத்தும் ஒவொரு digit-க்கும் சுழற்சி முறையில் நடைபெற வேண்டும். அதற்காக தான் while(n>0) பயன்படுத்துகின்றோம்.

n-ன் value குறைந்துகொண்டே வந்து 0 ஆகும்போது while() loop ஆனது நின்றுவிடும். இபொழுது n value 153-லிருந்து 0 ஆக மாறிவிட்டது. இந்த காரணத்திற்காக தான் n-ன் value-ஐ தொடக்கதிலே orginal என்ற variable-ல் assign செய்து கொண்டோம்.

இப்பொழுது orginal number-ம் sum செய்யப்பட்ட number-ம் சமமாக உள்ளதா என்று if(orginal==sum) சரிபார்க்கவேண்டும். சரியாக இருந்தால் "Armstrong number" என்று print செய்துகொள்ளுங்கள்.

C++ Program to check Armstrong number

#include<iostream>
using namespace std;
int main(){
  int n,orginal,sum=0,digit;
  cout<<"Enter a number: ";
  cin>>n;
  orginal=n;
  while(n>0){
    digit=n%10;
    sum=sum+(digit*digit*digit);
    n=n/10;
  }
  if(orginal==sum){
    cout<<"\nGiven number "<<orginal <<" is armstrong";
  }else{
    cout<<"\nGiven number "<<orginal <<" is not armstrong";
  }
return 0;
}
Output:
Enter a number: 153
Given number 153 is armstrong

// another checked out put
Enter a number: 128
Given number 128 is not armstrong

Pgcomments

Comments