判断一个数是否为水仙花数?

目录

知识回顾

知识延伸

思路梳理

接口剖析:

代码剖析:

法1:

法2:


知识回顾

知识延伸

 

下面是这些奇妙的自幂数的相应的区间之内的数值:

思路梳理

1、我们来在一个区间之内来判断这个区间的数有哪些数是水仙花数/相应的自幂数

以上的两种方式都通过写一个IsWaterFlower()的函数作为接口来直接判断

2、我们需要判断一个数是否为水仙花数,通过I/O(Input / Output)的方式来单次判断

接口剖析:

此处的key就是一个我们传入函数的判断值(普及一下在Java里面我们在C/C++之内被称为的函数就被称为“方法”了),下面我们来提前初始化几个我们需要使用的元素

代码剖析:

此处的sum就是我们用来装载一个水仙花数的容器,就是把水仙花数都放在sum里面,方便后面判断。

Remainder就是每次我们求出的每一位的数值,也就是每次/10之后得出的余数

ret就是一个交换器,我们不能让key直接暴露在整个程序中,我们得让key在最后进行判断时候发挥作用,所以我们必须在中途找一个交换器来每次更新key的数值。

我们想要知道一个数是否为水仙花数/自幂数,那么我们必须了解这个数的位数,就是为了去后续将他们变成水仙花数的方便的操作。

此处的count就是一个计数器,就是来计算我们需要判断的数的位数,因为每次让ret/10,就可以剥离末尾的一位数,直到ret被剥离完毕的时候(ret == 0),count的数值就是这个需要判断的数(ret也就是key)的位数。

我们后续还需要把每一位数剥离出来,所以此时ret的数值不能被剥离成0,所以此时我们继续使用key来重新赋值ret。

我们再继续使用sum来接收每一个水仙花数/自幂数,我们此时Remainder来剥离key中的每一个数,此时我们就需要每次Remainder =  ret%10(每次取余10就会得到一个末尾的个位数),此时我们就可以取出来他的每一个数来进行sum += (int)pow(Remainder , count),有人会问,pow是什么?

 我们也同时需要引入头文件#include<math.h>,pow(double x  , double y)也就是求一个数的n次方,x是底数,y是指数,我们最后得到的数需要是int类型的所以我们必须强制类型转换

把每一次的数的余数Remainder的count次方存入sum中,此时知道为什么要count这个计数器了吧!

我们再把这个数进行/10处理让他降位,直到ret(也就是key)变成0,

下面就是我们判断的时刻了,来判断一个数是否为水仙花数/自幂数

我们从始至终的key的数值来获得中间变量的过程变量都是被ret给代替了,sum每次都将key的每一位数的次方都存入,最终来进行判断,如果是水仙花数/自幂数,就返回1,否则就返回0。

等到我们后面使用接口的时候,就可以直接判断。 

法1:

给定一个区间Begin、End这两个变量来设定区间,我们使用一个for循环语句,每次进行判断,如果返回值是1的话,就是水仙花数/自幂数,如果是0,那就不是,不用执行任何操作。 

 

我们可以看见我们设定的区间解决了水仙花数/四叶玫瑰数。

 

法2:

 

直接给个input数,再直接调用接口IsWaterFlower(input)来判断是否为水仙花数/自幂数

 

好啦!今天的分享结束啦!你学到了吗?

码字不易!希望大家给个关注!后续我将会继续为大家带来更多高质量文章!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值