趣味数字(黑洞13)

题目描述
黑洞是一种引力强大并导致时空曲率大到光都无法从其事件视界逃逸的天体。数学的宇宙中也有黑洞,例如13。关于数字13,有这样的传说,耶稣受害前和弟子们共进了一次晚餐。参加晚餐的第13个人是耶稣的弟子犹大。犹大为了30块银元把耶稣出卖,致使耶稣受尽折磨。参加最后晚餐的是13个人,晚餐的日期恰逢13日,“13”给耶稣带来苦难和不幸。从此,“13”被认为是不幸的象征,人人避之若浼。 然而,在自然数的世界中,13是一个如黑洞一般的极具“吸引力”的数字,因为任何一个自然数重复按如下步骤计算后,最终必定会变为13。
首先,将自然数的每一位上的数字相加求和;
然后,将求和得到的结果乘以3再加上1;
通过以上计算会得到一个新的数字,新的数字重复执行上述操作,最终都会变为13。13像黑洞一般把所有自然数按这样的规则引向自己。
现在,给出任意一个自然数,请你求出该自然数按上述规则变为13,所经过的每一步演变过程。
以自然数123为例:
123各位之和为6,3*6+1,得到19;
19各位之和为10,3*10+1,得到31;
31各位之和为4,3*4+1,得到13
总共经过3轮计算。

输入
一个整数,数值在int类型范围内。
输出
输出该数字变为13所经历的每一步计算结果,用整数表示,每一步的结果单独占一行。
样例输入
123
样例输出
19
31
13

# include<stdio.h>
# include<math.h>
int sum(int n);
int main(void)
{
    int n,b,a=0;
    scanf("%d",&n);
    while(1)
    {
        b=sum(n);
        a=3*b+1;
        n=a;//不要忘记转化n的值
        printf("%d\n",a);
        if(a==13)
            break;
    }
    return 0;
}
int sum (int n)
{
    int len,s=0,i;
    len=log10(n)+1;
    for(i=1;i<=len;i++)
    {
        s=s+n%10;
        n=n/10;
    }
    return s;   
}

猜你喜欢

转载自blog.csdn.net/qq_45858803/article/details/109549998