练习题010:判断一个数是否为水仙花数
程序员文章站
2022-06-07 15:13:31
...
题目:判断一个数是否为水仙花数。
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
int isNarcissisticNumber(unsigned int number)
{
if (number < 100)
return 0;
int arr[10] = { 0 }; //储存number的每位的值
int i = 0;
unsigned int value = number;
while (value > 9)
{
arr[i] = value % 10;
value /= 10;
i++;
}
arr[i] = value; //把最高位放进数组
int count = i + 1;
int temp = 1;
int sum = 0;
for (int j = 0; j < count; j++)//利用循环把每位数相乘count次,在加起来
{
for (int k = 0; k < count; k++)
{
temp = temp*arr[j];
}
sum = sum + temp;
temp = 1;//要记得把temp复位
}
if (sum == number)
return 1;
return 0;
}
测试代码:
void Test(char* testName, unsigned int number, int expection)
{
if (testName != NULL)
{
int result = isNarcissisticNumber(number);
if (result == expection)
printf("%s passed\n", testName);
else
printf("%s FAILED\n", testName);
}
}
int main()
{
Test("test1", -1, 0);
Test("test2", 99, 0);
Test("test3", 153, 1);
Test("test4", 93084, 1);
Test("test5", 9800817, 1);
system("pause");
return 0;
}
上一篇: 获取时间中的微秒
下一篇: WPF采用MVVM模式命令绑定