百科知识

判断是否水仙花数,用C语言轻松实现这个有趣的数学问题

水仙花数是一个有趣的数学问题,也称为阿姆斯特朗数。一个水仙花数是一个n位数,它的每个位上的数字的n次方之和等于它本身。例如,一个三位的水仙花数是数字153,因为 1^3 + 5^3 + 3^3 = 153。用C语言实现判断是否为水仙花数的程序相对简单。下面是一个可能的实现方式:

c

include

include

int isNarcissisticNumber(int num) {

int originalNum = num; // 保存原始数字以便后续比较

int remainder, sum = 0; // 用于存储余数及累加和的变量

int n = 0; // 存储数字的位数

while (num != 0) { // 计算数字的位数

n++;

num /= 10;

}

num = originalNum; // 恢复原始数字以便计算每位数的立方和

while (num != 0) { // 计算每位数的立方并累加

remainder = num % 10; // 获取最后一位数字

sum += pow(remainder, n); // 计算该位数字的立方并累加

num /= 10; // 移去最后一位数字

}

return sum == originalNum; // 如果累加和等于原始数字,则为水仙花数,返回true;否则返回false

}

int main() {

int num; // 待检测的数字

printf(“请输入一个整数:”); // 提示用户输入一个整数进行验证

scanf(“%d”, &num); // 获取用户输入的整数

if (isNarcissisticNumber(num)) { // 判断是否为水仙花数并输出结果

printf(“%d 是一个水仙花数。”, num);

} else {

printf(“%d 不是一个水仙花数。”, num);

}

return 0; // 程序结束,返回0表示正常退出

}

这个程序首先定义了一个函数 `isNarcissisticNumber` 来判断一个数字是否为水仙花数。这个函数首先计算出输入数字的位数,然后计算出该数字每一位的立方和。如果立方和等于原始数字,那么这个数字就是一个水仙花数。在 `main` 函数中,程序获取用户的输入并调用 `isNarcissisticNumber` 函数进行判断,然后输出相应的结果。