C语言 水仙花数两种算法

两种方法:普通解法和巧妙解法
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
2.普通解法代码实现:

#include "stdio.h"
main()
{
  int i,j,k,n;
  printf("水仙花数是:");
  for(n=100;n<1000;n++)
  {	
  	i=n/100;/*分解出百位*/
    j=n/10%10;/*分解出十位*/
    k=n%10;/*分解出个位*/
    if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
      printf("%-5d",n);
  }
}

在这里插入图片描述
巧妙解法:

#include<stdio.h> 
#include "math.h"
main()
{ int i,iG,iS,iB;
  for(i=100;i<1000;i++)
   { iG=i%10;  /*计算个位数*/
     iS=i/10%10;  /*计算十位数*/
     iB=i/100;   /*计算百位数*/
     if(i==pow(iG,3)+pow(iS,3)+pow(iB,3))
        printf("%d  ",i);
    }
 }

在这里插入图片描述

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码写注释

请赞赏我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值