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;}
代码解释
-
包含头文件: 代码首先包含了
stdio.h
和math.h
头文件,分别用于输入输出和数学函数的使用。 -
findNarcissisticNumbers
函数: 该函数接受一个整数N
作为参数,用于查找所有N位水仙花数。 - 首先计算start
和end
,表示N位数的起始值和结束值。 - 使用for
循环遍历从start
到end
的每个整数。 - 在循环内部,使用while
循环计算当前整数num
的各个位数的N次幂之和sum
。 - 最后,判断sum
是否等于num
,如果是,则输出该数。 -
main
函数: - 首先提示用户输入一个正整数N
。 - 对输入的N
进行合法性检查,确保其在 3 到 7 之间。 - 调用findNarcissisticNumbers
函数查找并输出所有N位水仙花数。
如何编译和运行代码
- 将代码保存为一个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 著作权归作者所有。请勿转载和采集!