C语言:查找所有N位水仙花数

C语言:查找所有N位水仙花数

什么是水仙花数?

水仙花数(Narcissistic number),也被称为阿姆斯特朗数,是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如,153就是一个三位水仙花数,因为 13 + 53 + 33 = 153。

C语言代码实现

以下是一个示例的C语言代码,用于计算所有N位水仙花数:c#include <stdio.h>#include <math.h>

void findNarcissisticNumbers(int N) { // 计算所有N位水仙花数 int start = pow(10, N - 1); int end = pow(10, N) - 1; for (int num = start; num <= end; num++) { int sum = 0; int temp = num; while (temp > 0) { int digit = temp % 10; sum += pow(digit, N); temp /= 10; } if (sum == num) { printf('%d ', num); } }}

int main() { int N; printf('请输入一个正整数N (3≤N≤7): '); scanf('%d', &N); if (N < 3 || N > 7) { printf('输入错误,N应满足3≤N≤7。 '); return 1; } printf('%d位水仙花数为: ', N); findNarcissisticNumbers(N); return 0;}

代码解释

  1. 包含头文件: 代码首先包含了 stdio.hmath.h 头文件,分别用于输入输出和数学函数的使用。

  2. findNarcissisticNumbers 函数: 该函数接受一个整数 N 作为参数,用于查找所有N位水仙花数。 - 首先计算 startend,表示N位数的起始值和结束值。 - 使用 for 循环遍历从 startend 的每个整数。 - 在循环内部,使用 while 循环计算当前整数 num 的各个位数的N次幂之和 sum。 - 最后,判断 sum 是否等于 num,如果是,则输出该数。

  3. main 函数: - 首先提示用户输入一个正整数 N。 - 对输入的 N 进行合法性检查,确保其在 3 到 7 之间。 - 调用 findNarcissisticNumbers 函数查找并输出所有N位水仙花数。

如何编译和运行代码

  1. 将代码保存为一个C语言源文件,例如 narcissistic_numbers.c。2. 使用C编译器(例如 GCC)编译代码:gcc narcissistic_numbers.c -o narcissistic_numbers。3. 运行编译后的程序:./narcissistic_numbers

程序会要求您输入一个正整数N,并输出所有N位水仙花数。

标签: 常规


原文地址: https://cveoy.top/t/topic/bxkP 著作权归作者所有。请勿转载和采集!