以下c语言程序是输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身
时间: 2024-04-11 13:17:34 浏览: 100
#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++) {
int num = i * 100 + j * 10 + k;
if (num == i * i * i + j * j * j + k * k * k) {
printf("%d\n", num);
}
}
}
}
return 0;
}
相关问题
以下c语言程序是输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身,用三种算法
算法一:
#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++)
{
int n = i * 100 + j * 10 + k;
if(n == i * i * i + j * j * j + k * k * k)
{
printf("%d\n", n);
}
}
}
}
return 0;
}
算法二:
#include <stdio.h>
int main()
{
int n, i, j, k;
for(n = 100; n < 1000; n++)
{
i = n / 100;
j = n / 10 % 10;
k = n % 10;
if(n == i * i * i + j * j * j + k * k * k)
{
printf("%d\n", n);
}
}
return 0;
}
算法三:
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, j, k;
for(n = 100; n < 1000; n++)
{
i = n / 100;
j = n / 10 % 10;
k = n % 10;
if(n == pow(i, 3) + pow(j, 3) + pow(k, 3))
{
printf("%d\n", n);
}
}
return 0;
}
以下c语言程序是输出所有的水仙花数。所谓水仙花数是一个三位数,其各位数字的立方和等于该数本身,用两种算法
实现。
算法一:
```
#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 函数来计算立方,但是可能会影响程序的效率。
阅读全文