From 575f8c94fc12265c920da7cc3f7d569ca3d3139d Mon Sep 17 00:00:00 2001 From: Nikhil Bhat Date: Fri, 4 Oct 2019 22:00:08 +0530 Subject: [PATCH] Added ArmstrongNumber.c --- README.md | 9 +++--- misc/ArmstrongNumber.c | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 misc/ArmstrongNumber.c diff --git a/README.md b/README.md index 5f720515..4c96e43a 100644 --- a/README.md +++ b/README.md @@ -73,19 +73,20 @@ C ## Misc + - ArmstrongNumber - Binning - Factorial - Fibonacci + - Greatest Common Divisor - isArmstrong - LongestSubSequence - palindrome + - prime factorization - QUARTILE - rselect - strongNumber - - TowerOfHanoi - - Greatest Common Divisor - - Sudoku Solver - - prime factorization + - Sudoku Solver + - TowerOfHanoi ## Project Euler - Problem 1 diff --git a/misc/ArmstrongNumber.c b/misc/ArmstrongNumber.c new file mode 100644 index 00000000..ced9b9f8 --- /dev/null +++ b/misc/ArmstrongNumber.c @@ -0,0 +1,64 @@ +//A number is called as Armstrong number if sum of cubes of digits of number is equal to the number itself. +// For Example 153 is an Armstrong number because 153 = 1³+5³+3³. +#include + +//Function to calculate x raised to the power y +int power(int x, unsigned int y) +{ + if (y == 0) + return 1; + if (y % 2 == 0) + return power(x, y / 2) * power(x, y / 2); + return x * power(x, y / 2) * power(x, y / 2); +} + +//Function to calculate order of the number +int order(int x) +{ + int n = 0; + while (x) { + n++; + x = x / 10; + } + return n; +} + +// Function to check whether the given number is +// Armstrong number or not +int isArmstrong(int x) +{ + // Calling order function + int n = order(x); + int temp = x, sum = 0; + while (temp) + { + int r = temp % 10; + sum += power(r, n); + temp = temp / 10; + } + + // If satisfies Armstrong condition + if (sum == x) + return 1; + else + return 0; +} + +// +int main() +{ + int x = 153; + if (isArmstrong(x) == 1) + printf("True\n"); + else + printf("False\n"); + + x = 1253; + if (isArmstrong(x) == 1) + printf("True\n"); + else + printf("False\n"); + + return 0; +} +