2020-11-21上机实践之穷举——水仙花数

1 问题及代码

/*
*Copyright (c)2020,优快云学院
*All rights reserved.
*文件名称:main.c
*作    者:李先声
*完成日期:2020年11月21日
*版 本 号:v1.0
*问题描述:【项目2-水仙花数】
对于三位数字,若各位数字立方和等于该数,该数就是水仙花数。。
*/
#include <stdio.h>
int main()
{
    int i,m,k,n;

    for(n=100;n<1000;n++)
    {
        //计算n的各i位数立方和

        k=n;

        m=0;

        while(k>0)
        {
            i=k%10;
            m+=i*i*i;
            k=k/10;
        }
        if(m==n)
        {
            printf("%d为水仙花数\n",m);
        }
    }
    return 0;
}

2 计算结果

3 小结

本题的解答我参考了前面阿姆斯特朗数的算法,并没有用到穷举的思路。用穷举思路的代码如下:

 

/*
*Copyright (c)2020,优快云学院
*All rights reserved.
*文件名称:main.c
*作    者:李先声
*完成日期:2020年11月21日
*版 本 号:v1.0
*问题描述:【项目2-水仙花数】
对于三位数字,若各位数字立方和等于该数,该数就是水仙花数。。
*/
#include <stdio.h>
int main()
{
    int i,j,k,m,n;

    for(i=1;i<10;i++)
        for(j=0;j<10;j++)
            for(k=0;k<10;k++)
            {
                m=i*100+j*10+k;
                n=i*i*i+j*j*j+k*k*k;

                if(m==n)
                {
                    printf("%d为水仙花数\n",m);
                }
            }


    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值