您的位置:首页 > 编程语言 > C语言/C++

用C语言求水仙花数

2018-03-13 23:25 288 查看
以下总结两种做法,供大家参考,希望对大家有所帮助。同时欢迎分享其他做法。
求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,则153是一个“水仙花数”。 

/*
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。
例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:
153 = 1^3 + 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。
*/\\第一种

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int main()
{
int a, b, c, y, n = 0;
int x;
for (x = 100; x <= 999; x++)
{
a = x % 1000 / 100; //求第一位数
b = x % 100 / 10; //求第二位数
c = x % 10 / 1; //求第三位数
y = a*a*a + b*b*b + c*c*c;
if (y == x)
{
printf("%d ", x);
n++;
}
}
printf("水仙花数量为:%d", n);
return 0;
}

\\第二种

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i, j, k, num;
for (i = 1; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
for (k = 0; k < 10; k++)
{
num = 100 * i + 10 * j + k;
if (num == (i*i*i + j*j*j + k*k*k))
printf("%d ", num);
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息