如果一个数字等于其自身数字的总和乘以给定数字中数字位数的幂,则称为阿姆斯特朗 (Armstrong)或水仙花数 (Narcissistic) 数字。
例如,数字153是阿姆斯特朗数字,因为:1^3 + 5^3 + 3^3 = 153
类似地,1634也是阿姆斯特朗数,即 1^4 + 6^4 + 3^4 + 4^4 = 1634
数字1到9也是阿姆斯特朗数字。
- #include <stdio.h>
- #include <conio.h>
- #include <math.h>
- int main()
- {
- int number, original, rem, sum=0, digit=0;
- clrscr();
- printf("Enter number: ");
- scanf("%d", &number);
-
- original = number;
-
- /* Counting number of digit in a given number 计算给定数字中的位数 */
- while(number!=0)
- {
- digit++;
- number = number/10;
- }
-
- /* After execution above loop number becomes 0 执行后,循环号变为0
- So copying original number to variable number 因此将原始变量复制到可变 变量 */
-
- number = original;
- /* Finding sum */
- while(number != 0)
- {
- rem = number%10;
- sum = sum + pow(rem, digit);
- number = number/10;
- }
- /* Making decision */
- if(sum == original)
- {
- printf("%d is ARMSTRONG.", original);
- }
- else
- {
- printf("%d is NOT ARMSTRONG.", original);
- }
- getch();
- return(0);
- }
复制代码
|