Armstrong number c program
Armstrong number c program
Armstrong number c program: c programming code to check whether a number
is Armstrong or not. Armstrong number is a number which is equal to sum
of digits raise to the power total number of digits in the number. Some
Armstrong numbers are: 0, 1, 2, 3, 153, 370, 407, 1634, 8208 etc. Read
more about Armstrong numbers at Wikipedia.
We will consider base 10 numbers in our program. Algorithm to check
Armstrong is: First we calculate number of digits in our program and
then compute sum of individual digits raise to the power number of
digits. If this sum equals input number then number is Armstrong
otherwise not an Armstrong number.
Examples:
7 = 7^1
371 = 3^3 + 7^3 + 1^3 (27 + 343 +1)
8208 = 8^4 + 2^4 +0^4 + 8^4 (4096 + 16 + 0 + 4096).
1741725 = 1^7 + 7^7 + 4^7 + 1^7 + 7^7 + 2^7 +5^7 (1 + 823543 + 16384 + 1 + 823543 +128 + 78125)
7 = 7^1
371 = 3^3 + 7^3 + 1^3 (27 + 343 +1)
8208 = 8^4 + 2^4 +0^4 + 8^4 (4096 + 16 + 0 + 4096).
1741725 = 1^7 + 7^7 + 4^7 + 1^7 + 7^7 + 2^7 +5^7 (1 + 823543 + 16384 + 1 + 823543 +128 + 78125)
.
#include <stdio.h>
int power(int, int);
int main()
{
int n, sum = 0, temp, remainder, digits = 0;
printf("Input an integer\n");
scanf("%d", &n);
temp = n;
// Count number of digits
while (temp != 0) {
digits++;
temp = temp/10;
}
temp = n;
while (temp != 0) {
remainder = temp%10;
sum = sum + power(remainder, digits);
temp = temp/10;
}
if (n == sum)
printf("%d is an Armstrong number.\n", n);
else
printf("%d is not an Armstrong number.\n", n);
return 0;
}
int power(int n, int r) {
int c, p = 1;
for (c = 1; c <= r; c++)
p = p*n;
return p;
}
=================================================================
C program to check Armstrong number using function
#include <stdio.h> int check_armstrong(long long); long long power(int, int); int main () { long long n; printf("Input a number\n"); scanf("%lld", &n); if (check_armstrong(n) == 1) printf("%lld is an armstrong number.\n", n); else printf("%lld is not an armstrong number.\n", n); return 0; } int check_armstrong(long long n) { long long sum = 0, temp; int remainder, digits = 0; temp = n; while (temp != 0) { digits++; temp = temp/10; } temp = n; while (temp != 0) { remainder = temp%10; sum = sum + power(remainder, digits); temp = temp/10; } if (n == sum) return 1; else return 0; } long long power(int n, int r) { int c; long long p = 1; for (c = 1; c <= r; c++) p = p*n; return p; }
Comments
Post a Comment