描述: | 如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数),1除外,如407 = 43+03+73就是一个阿姆斯特朗数。试编程求n(n ≤ 65536)以内的所有阿姆斯特朗数。
接口说明 原型: int CalcArmstrongNumber(int n); 输入参数: int n: n ≤ 65536
返回值: n以内的阿姆斯特朗数的数量 |
#include <string.h>
#include <math.h>
#include "OJ.h"
/*
功能: 求n(n ≤ 65536)以内的所有阿姆斯特朗数
原型:
int CalcArmstrongNumber(int n);
输入参数:
int n: n ≤ 65536
返回值:
n以内的阿姆斯特朗数的数量。
*/
int CalcArmstrongNumber(int n)
{
/*在这里实现功能*/
int data[5] = { 0 };
int i = 0, j = 0, k = 0, count = 0, temp = 0;
int sum = 0;
/*判断输入的参数是否合法*/
if (n > 65536)
{
return 0;
}
/*求出阿姆斯特朗数的个数*/
for (i = 10; i <= n; i++)
{
temp = i;
j = 0;
memset(data, 0, 5);
/*求出每一位的数*/
while (temp)
{
data[j++] = temp % 10;
temp = temp / 10;
}
/*判断是否是阿姆斯特朗数*/
sum = 0;
for (k = 0; k < 5; k++)
{
sum += pow(static_cast<double>(data[k]), 3);
}
if (sum == i)
{
count++;
}
}
return count;
}