(输出超限)从标准输入读取一个整数n(1<n<32767),将n分解为质数幂的乘积,将结果打印到标准输出上。分解式中的质数按从小到大的顺序输出

问题遇到的现象和发生背景

从标准输入读取一个整数n(123*5。(输出超限)

用代码块功能插入代码,请勿粘贴截图
#include
#include
int main()
{
    int n, a[100], count = 0, count1 = 0, b[100], count2 = 0;
    scanf_s("%d", &n);
    int m = n;
    for (int i = 2; i <= sqrt(n); i++)
    {
        if (n % i == 0)
        {
            a[count] = i;
            count++;
        }
    }
    for (int i = 0; i < count; i++)
    {
        count1 = 0;
        for (int j = 2; j < a[i]; j++)
        {
            if (a[i] % j == 0)
            {
                count1++;
                break;
            }
        }
        if (count1 == 0)
        {
            b[count2] = a[i];
            count2++;
        }
    }
    printf("%d=", n);
    printf("%d", b[0]);
    int f = n / b[0];
    while (f % b[0] == 0)
    {
        printf("*%d", b[0]);
        f /= b[0];
    }
    int i = 1;
    while (iwhile (n % b[i] == 0)
        {
            printf("*%d", b[i]);
            n /= b[i];
        }
        i++;
    }
    return 0;
}

运行结果及报错内容

输出超出限制

这个应该不需要这么麻烦 可以这么做你只要找到它的第一个质因数 然后除以这个质因素后开始再找第一个质因数不断分解就行了