求解质因数及相应指数,铁子们看一看吧

为什么我输入28只能输出2:2
给定一个整数n,请给出它的质因数分解。

如28可以如下分解:28=2^2×7

请你输出的每个质因数以及该质因数的指数。

输入格式
一行,包含一个整数n(2≤n≤10000)。

输出格式
若干行,每行输出整数n的一个质因数,以及该质因数的指数,之间用一个冒号:隔开,且按质因数从小到大的顺序输出。

输入样例
28

输出样例
2:2

7:1

特殊提示
输入2:

2

输出2:

2:1
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, A, k, B, C = 0, D = 0, g, j, p;
scanf("%d", &n);

for (i = 2; i <= n - 1; i++)
{
    if (n % i != 0)
        continue;

    for (k = 1; k <= i; k++)
    {
        if (i % k != 0)
            C = 1 + C;
    }

    A = i;
    for (j = 1; j < n; j++)
    {
        p = pow(A, j);
        if (n % p == 0)
            D = D + 1;
        continue;
    }

    if (C == i - 2)
        printf("%d%c%d\n", A, ':', D);
    
}
return 0;

}

修改如下,供参考:

#include <stdio.h>
int main()
{
    int n, i, A = 1, B, D;
    scanf("%d", &n);
    B = n/2;
    for (i = 2,D = 1; i <= B || n != 1; i++)
    {
        if (n % i == 0)
        {
            A = 0;  //质数标志
            n /= i;
            D = 1;
            while(n%i == 0)
            {
                n /= i;
                D++;
            }
            if(D >= 1)
                printf("%d:%d\n",i,D);
        }
    }
    if(A)   printf("%d:%d\n",n,D);
    return 0;
}