mirror of
https://github.com/TheAlgorithms/C
synced 2024-11-22 13:31:21 +03:00
Added ArmstrongNumber.c
This commit is contained in:
parent
972d4fad7a
commit
575f8c94fc
@ -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
|
||||
|
64
misc/ArmstrongNumber.c
Normal file
64
misc/ArmstrongNumber.c
Normal file
@ -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 <stdio.h>
|
||||
|
||||
//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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user