以下c语言程序是输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身,用两种算法
时间: 2024-04-11 09:07:45 浏览: 82
C语言变种水仙花数.zip
实现。
算法一:
```
#include <stdio.h>
int main()
{
int i, j, k;
for(i=1; i<=9; i++)
{
for(j=0; j<=9; j++)
{
for(k=0; k<=9; k++)
{
if(i*i*i + j*j*j + k*k*k == i*100 + j*10 + k)
{
printf("%d ", i*100 + j*10 + k);
}
}
}
}
return 0;
}
```
算法二:
```
#include <stdio.h>
#include <math.h>
int main()
{
int i;
for(i=100; i<=999; i++)
{
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if(pow(a, 3) + pow(b, 3) + pow(c, 3) == i)
{
printf("%d ", i);
}
}
return 0;
}
```
两种算法的思路都是一样的,都是枚举三位数,然后将每个数的个位、十位、百位分离出来,计算其立方和,判断是否等于原数。第一种算法使用了三重循环,第二种算法使用了数学库中的 pow 函数来计算立方,但是可能会影响程序的效率。
阅读全文