ஒரு 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<stdio.h>
#include<conio.h>
int main(){
int n,orginal,sum=0,digit;
printf("Enter a number: ");
scanf("%d",&n);
orginal=n;
while(n>0){
digit=n%10;
sum=sum+(digit*digit*digit);
n=n/10;
}
if(orginal==sum){
printf("\nGiven number %d is armstrong",orginal);
}else{
printf("\Given number %d is not armstrong",orginal);
}
return 0;
}
Enter a number: 153
Given number 153 is armstrong
// another checked out put
Enter a number: 128
Given number 128 is not armstrong
Pgcomments
இது பற்றிய தங்களின் கருத்துகளை இங்கே பதிவிடுங்கள் . இது பயனுள்ளதாக விரும்பினால் மற்றவர்களுக்கும் இதை share செய்யுங்கள்.
Comments