c语言编程n位自幂数,自幂数9位数查找之算法优化(C语言)(水仙数是4位数自幂数)...

``# 自幂数的9位数查找之算法优化(C语言)

这是一篇C语言有关自幂数查找的优化过程,目前笔者最好结果是8位数用时7.007秒,9位数用时79.079秒。(水仙数是4位数自幂数)

期待有更棒的结果。

思维导图先上!!!

e89aa3615afb9fb5eb5db4162a5a272a.png

一,明确自幂数

1.什么是自幂数?

自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(水仙数是4位数自幂数)

(例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数)

2.关键点。

1)幂数(自幂数的位数)

2)各底数(自幂数的每个位上的数)

3)一个数的幂次方

4)求和比较

二,一个数的幂次方

1.得到幂数

1)初步想法:

1.这个数除以10赋值给自己:

2.这个数为0,跳出循环。

3.这个数不为0,位长加1,执行第一步。

5f37dad240927e6d17e2261a7bca491c.png

2)优化: 打破循环,直接用条件语句判断范围完成。

这里有一个很棒的优化点。

例如:一般都会从0开始。

b6bafad60c6167d8fc00bb5de7802da6.png

但是,这样效率并不高,每次查找9位数都得先经过前面的1到8位数的判断,而先判断9位数会则减少时间,尤其1位数的个数少,全部经历8次判断次数的总次数远远少于9位数在底下的情况。如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值