关于C语言求水仙花数

来源:百度知道 编辑:UC知道 时间:2024/06/17 00:59:12
想问下不用C语言解释下水仙数计算的公式,一直都不明白是怎么得出这个公式的

一个三位数,个位上的数的立方加上十位上数的立方,加上百位上的数的立方等于原三位数。例如:153=1³+5³+3³

有公式吗...?
#include <stdio.h>
#include <math.h>
int main()
{
int i, j, k;
int n;
for (n = 100; n < 1000; n++)
{
i = n / 100;
j = n / 10 - i * 10;
k = n - i * 100 - j * 10;
if (pow(i, 3) + pow(j, 3) + pow(k, 3) == n)
printf("%d ", n);
}
return 0;
}

所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方.

这是一个穷举的问题,适合一个一个的试它是否是水仙花数。
无所谓就是100~999之间的数字,然后利用计算机运算速度快的特点,一个一个的试,看它是否满足水仙花数的条件。

给你个我自己写的容易懂的程序:

#include <stdio.h>
#include <math.h>
void main()
{
int n,bw,sw,gw;
for(n=100;n<1000;n++)
{
bw=n/100;sw=n%100/10;gw=n%10/*求出数字的百位,十位,个位值*/
if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw)
printf("%5d",n);