阿姆斯壮数(armstrong number) 定义:阿姆斯壮数(armstrongnumber) 是等于其数字的立方数之和的数字,例如:0,1,153,370,371,407等。
现在试着理解为什么153是一个阿姆斯壮数字, 153 = (1*1*1)+(5*5*5)+(3*3*3)。
|
1 2 3 4 5 6 |
153 = (1*1*1)+(5*5*5)+(3*3*3) (1*1*1)=1 (5*5*5)=125 (3*3*3)=27 So: 1+125+27=153 |
C语言检查输入数据是不是阿姆斯壮数
#include <math.h>
#include <stdio.h>
int main() {
int low, high, number, originalNumber, rem, count = 0;
double result = 0.0;
printf("Enter two numbers(intervals): ");
scanf("%d %d", &low, &high);
printf("Armstrong numbers between %d and %d are: ", low, high);
// swap numbers if high < low
if (high < low) {
high += low;
low = high - low;
high -= low;
}
// iterate number from (low + 1) to (high - 1)
// In each iteration, check if number is Armstrong
for (number = low + 1; number < high; ++number) {
originalNumber = number;
// number of digits calculation
while (originalNumber != 0) {
originalNumber /= 10;
++count;
}
originalNumber = number;
// result contains sum of nth power of individual digits
while (originalNumber != 0) {
rem = originalNumber % 10;
result += pow(rem, count);
originalNumber /= 10;
}
// check if number is equal to the sum of nth power of individual digits
if ((int)result == number) {
printf("%d ", number);
}
// resetting the values
count = 0;
result = 0;
}
return 0;
}
|
1 2 3 |
Enter two numbers(intervals): 200 2000 Armstrong numbers between 200 and 2000 are: 370 371 407 1634 |
除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!