c语言求水仙花数

4-1 水仙花数

水仙花数是指一个n位正整数(n>=3),他的每个位上的数字的n次幂之和等于他本身。

例如:

153 = 1^3 + 5^3 + 3^3

本题要求编写程序,计算所有n位水仙花数。

输入格式

输入在一行中给出的一个正整数n(3<=n<=7)

输出格式

按递增顺序输出所有n位水仙花数,每个数字占一行

输入样例

3

输出样例

153
370
371
407

代码

#include <stdio.h>
 int main(){
    int n; //n位整数 
    scanf("%d",&n); 
    int i,first; //first用于记录第一个符合位数的数 
    for(i=1;i<n;i++){ //计算第一个数 
        first*=10; 
    } 
    // printf("first=%d\n",first);
    
    for(i=first;i<first*10;i++){ //遍历每一个符合位数的数字 i
        int t,p,a;
        int sum=0;
        int d = 0;
        
        for(p=i;p>0;p/=10){ //因为要对i进行拆解,所以要一个变量用来实现拆解i的同时保证i不变 
            t=p%10; //取末位数 
            d=t; //因为要对t进行幂运算处理,多以要引入变量用于存储t的初始值 
            
            for(a=1;a<n;a++){ //取t的n次方 
                t*=d;   
            }
            
            sum+=t; //得到每位数字的n次方 
            //printf("%d\n",sum);
        }
        
        if(i==sum){ //判断条件 
            printf("%d\n",i);
        }   
    } 
    return 0;
 }

思路

  1. 接收一个n,用来得到n位数

  2. 使用n进行幂运算得到第一个需要判断的数字first

  3. 使用一个循环遍历每一个符合位数的数字

  4. 使用一个循环对每个数字进行拆解

  5. 使用循环,在4的循环中将每个拆开的数字进行幂运算取n次方,求和sum

  6. 判断,是否符合条件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值