153=1*1*1+5*5*5+3*3*3,你能找出所有满足此规律的三位数吗?

小添非常喜欢学习数学,有一天中午,小添正在自习的时候,发现了一个神奇的数字:153 = 1*1*1 + 5*5*5 + 3*3*3。于是乎,她就把这个数字的有趣规律告诉了数学老师。老师笑了笑,“小添同学,你能想办法找到所有符合这个规律的三位数吗?”。

小添听说你会电脑编程,于是找到了你,想让你来帮她解决。

153=1*1*1+5*5*5+3*3*3,你能找出所有满足此规律的三位数吗?

数字游戏

问题描述

153是一个特殊的数,它等于其每位数字的立方和,即153 = 1*1*1 + 5*5*5 + 3*3*3。请你用编程语言求出所有满足这个条件的三位十进制数。

<code>输出格式:
从小到大依次输出满足条件的三位十进制数,每个数字占一行。/<code>

问题分析

仔细审题 153 = 1*1*1 + 5*5*5 + 3*3*3,我们可以看出这类数字符合如下规律:

<code>数字本身 = 个位数的三次方 + 十位数的三次方 + 百位数的三次方/<code>

题目中要求我们找到满足这个规律的3位十进制数,我们知道三位十进制数就是100~999之间的数字,那么我们就可以对100~999之间的数字,依次对每位数字计算出其个位数、十位数、百位数,然后再判断是否满足如上规律,如果符合就输出这个数字,否则就继续判断下一位数字。

程序编写

① 确定寻找的数字范围是100~999之间:

注意:在Python中,循环从0开始,不包含1000

<code>for x in range(100,1000):/<code>

② 计算出这个数的个位数:

注意:这个数求余10的值就是它的个位数

<code>g = x % 10 #个位数/<code>

③ 计算出这个数的十位数:

注意:Python中计算十位数首先我们要把这个数除以10的数的小数点后的数字去掉,使其变为整数,然后再对其求余10即可

<code>s = int(x / 10) % 10 #十位数/<code>

④ 计算这个数的百位数:

注意:我们已知这个数为三位数,所以他的百位数就是这个数除以100的数去掉小数点之后的部分,使其变为整数

<code>b = int(x / 100) #百位数/<code>

⑤ 判断是否满足规律:

注意:数字本身 = 个位数的三次方 + 十位数的三次方 + 百位数的三次方,如果满足此规律就打印出这个字,否则继续循环判断下一个数

<code>if x == (g*g*g + s*s*s + b*b*b):
    print(x)/<code>

完整代码

为了便于你一气呵成的阅读与思考,如下列出完整的代码:

<code>for x in range(100,1000):
    g = x % 10 #个位数
    s = int(x / 10) % 10 #十位数
    b = int(x / 100) #百位数
    if x == (g*g*g + s*s*s + b*b*b):
        print(x)/<code>

好了,今天的分享就到这里,大家是不是感觉这个问题很简单呢?是不是经过我们分析后就迎刃而解了呢?如果你也想通过编程的方式来解决生活或学习中遇到的各种各样的问题,那么欢迎关注头条号@科技时代聊编程。

谢谢各位朋友的关注,我们会持续更新更多好玩又有趣的编程学习知识,同时也欢迎您在评论区中留言,和我们共同探讨和学习编程吧!


分享到:


相關文章: