From ba94b4791006f5ca70fed4af3573c8b8f241da3b Mon Sep 17 00:00:00 2001 From: Jahnavi-5 <115690004+Jahnavi-5@users.noreply.github.com> Date: Fri, 14 Oct 2022 22:04:42 +0530 Subject: [PATCH] Program to check Armstrong Number. --- armstrong.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 armstrong.cpp diff --git a/armstrong.cpp b/armstrong.cpp new file mode 100644 index 0000000..d9c120d --- /dev/null +++ b/armstrong.cpp @@ -0,0 +1,52 @@ +// C++ program to determine whether the number is +// Armstrong number or not +#include +using namespace std; + +/* 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 +bool 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 + return (sum == x); +} + +// Driver Program +int main() +{ + int x = 153; + cout << boolalpha << isArmstrong(x) << endl; + x = 1253; + cout << boolalpha << isArmstrong(x) << endl; + return 0; +}