易游港

 找回密码
 注册
搜索
热搜: 城市天际线
查看: 2527|回复: 0

水仙花数,阿姆斯特朗数

[复制链接]

64

主题

3

回帖

387

积分

管理员

积分
387
发表于 2021-12-16 16:30:43 | 显示全部楼层 |阅读模式
阿姆斯特朗数也就是俗称的水仙花数,是指一个三位数,其各位数字的立方和等于该数本身。例如:153=13+53+33,所以 153 就是一个水仙花数。求出所有的水仙花数。算法思想对于阿姆斯特朗数问题,根据水仙花数的定义,需要分离出个位数、十位数和百位数。然后按其性质进行计算并判断,满足条件则打印输出,否则不打印输出。

因此,阿姆斯特朗数问题可以利用循环语句解决。设循环变量为 i,初值为 100,i 从 100 变化到 1000;依次判断条件是否成立,如果成立则输出,否则不输出。

算法思想具体如下:
① 分离出个位数,算术表达式为:j=i%10。
② 分离出十位数,算术表达式为:k=i/10%10。
③ 分离出百位数,算术表达式为:n=i/100。
④ 判断条件是否成立。若是,执行步骤 ⑤;若不是,执行步骤 ⑥。
⑤ 打印输出结果。
⑥ i 自增 1。
⑦ 转到 ① 执行,直到 i 等于 1000。

其判断的条件为:j*j*j+k*k*k+n*n*n==i。


源代码:
[C] 纯文本查看 复制代码
#include <stdio.h>
int main()
{
    int i,j,k,n;
    for(i=100;i<1000;i++)
    {
        j=i%10;
        k=i/10%10;
        n=i/100;
        if(j*j*j+k*k*k+n*n*n==i)
            printf("%5d\n",i);
    }
    return 0;
}

调试运行结果所有的阿姆斯特朗数,如下所示:
  153
  370
  371
  407
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|易游港

GMT+8, 2025-3-13 07:02 , Processed in 0.095838 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2025 Tencent Cloud.

快速回复 返回顶部 返回列表