weixin_46306548
扶我起来我还能敲几行
采纳率85.7%
2021-03-29 00:19

一个编程题目,想了一晚上不知道错在哪里,求大佬指点!!!

题目:

一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。 
例如,145=1!+4!+5!,则145是一个三位阶乘和数。 
请输出所有阶乘数(不会超过十万)

 

小弟的代码:

#include <stdio.h>

int jc(int n){
    if(n == 1){
        return 1;
    }
    return jc(n - 1) * n;
}

int main(){
    int x, sum = 0, a;
    for(int j = 1; j <= 40485; j++){
        a = j;
        while(j != 0){
            x = j % 10;
            j /= 10;
            sum += jc(x);
        }
        j = a;
        if(sum == a){
            printf("%d ", j);
        }
    }
    return 0;

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • qq_43414873 小白小白你好菜 2月前

    循环太多,系统卡死

    #include <stdio.h>

    int b[10] = {0, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};

    int main(){
        int x, sum = 0, a;
        for(int j = 1; j <= 100000; j++){
            sum = 0; 
            a = j;
            while(j != 0){
                x = j % 10;
                j /= 10;
                sum += b[x];
            }
            j = a;
            if(sum == a){
                printf("%d ", j);
            }
        }
        return 0;

    点赞 1 评论 复制链接分享
  • Yin_Ruo 土拨鼠1号 2月前

    循环里套循环,尽量别有这样的代码

    点赞 1 评论 复制链接分享

相关推荐