本文主要是介绍C语言求1到10000的水仙花数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
定义:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
这里我们认为n位数中,只要每位的n次方等于该数,该数便是一个水仙花数。
求解思路:1.由于不知道有几位数,所以首先我们先求出n位数确定的位数
2.在求余算出n位数的余数之后,利用pow(m,n)求m的n次方函数算出每位数的n次方
3.将每位数的n次方相加,判断是否等于该数;如果相等,则是水仙花数,否则不是
//水仙花数:n位数每位数的n次方等于该数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <windows.h>
#include <math.h>
int main()
{int i = 1;//求1到10000的水仙花数for (i = 1; i <= 10000; i++){int count = 1; //水仙花数至少是一位int tmp = i;int sum = 0;//1.判断位数while (tmp / 10) {count++;tmp = tmp / 10;}tmp = i; //while循环后已改变tmp值,所以tmp需要重新被赋值//2.求和while (tmp) //保证最高位的n次方不被丢掉{sum += pow(tmp % 10, count); //pow(float x,float y):求次方函数(x的y次方)tmp = tmp / 10;}if (i == sum){printf("%d ", i);}}system("pause");return 0;
}
这篇关于C语言求1到10000的水仙花数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!