c语言怎样才能判断出以下题目不会一直循环下去都不会出现固定值

题目:
对一个三位数,先对该三位数的各个位数字立方求和,在对得出结果的各个位数字立方求和.如此循环下去,判断最后是否能求出一个固定不变的值;如果不能,则输出error.(在求解过程中,如果结果大于三位数,则对该数的低三位继续往下运算.
例:111
第一次1^3+1^3+1^3=3
第二次0+0+3^3=27
三0+2^3+7^3=351
四3^3+5^3+1^3=153
第五次与第四次结果相同
输出
该如何判断继续循环下去不会出现固定值呢?
求大佬解答

这个判断不了吧,可以限制循环次数,找多少次就不找了

供参考:

#include<stdio.h>
int main()
{
    int T, n, k, flg = 0, i;
    scanf("%d", &T);
    while (T != 1 && T != 55 && T != 136 && T != 153 && T != 160 && T != 370 && T != 371 && T != 407)
    {
        n = 0; k = 0; flg++; i = 1;
        printf("%d-", T);
        while (i <= 3)
        {
            n += (T % 10) * (T % 10) * (T % 10);
            printf("%c%d*%d*%d", k++ == 0 ? '>' : '+', T % 10, T % 10, T % 10);
            T /= 10;
            i++;
        }
        printf("=%d\n", n);
        T = n;
    }
    if (flg == 0)printf("%d", T);
    return 0;
}