C++分解质因数问题,为什么没有输出结果呀?

分解质因数,输入一个整数n,输出n=x1x2x3……,请大家帮忙看看为什么这个程序EmptyOutput呢?
感谢各位佬!
(输出(i+2)那里还没完善,然后打算之后写if把最后一个去掉,n=也还没写)


#include 
using namespace std;

int q(int m,int k,int y)
{
    if(y%m==0) {k++;q(y/m,k,y);}//用k记录n可以被b[i]整除的次数;不能整除后,把k赋给b[i] ,得到一个数组的值为一个质因数乘的次数,角标为该质因数-2的数组b[i]  
    else {m=k;return m;}
}                                   
 
 
void prime(int n)
{
int a[100000]={0};
int b[100000]={0};
for(int i=2;iint num=0;
    for(int j=2;jif(i%j==0) num++;
      }
    if(num==0) a[i-2]=i;
 }                                   //先找出小于n的所有质数,存入一个数组,得到由质数和0组成的数组a[i] 
 
for(int i=0;i2;i++)         //判断a[i]里的质数是不是n的因数 
 {
    if(a[i]==0) continue;     //跳过值为0的b[i] 
    else
    {
      if(n%a[i]==0) b[i]=a[i];//把是n的因数的质数存进b[i] ,得到的数组b[i]中是0和质因数 
    }
 }
                                
for(int i=0;i2;i++) 
 {
    int x=0;
    if(b[i]!=0) q(b[i],x,n);//调用函数q 
 }           
                   
for(int i=0;i<=n-2;i++)//循环完成后b[i]的值为一个质因数乘的次数,i角标为该质因数-2,输出n个(i+2)* 
 { 
    if(b[i]!=0) 
    {
        for(int j=1;j<=b[i];j++)
        { 
            printf("(i+2)*");
        }
    } 
 } 
}

int main() 
{
    int n=0;
    cin>>n;
    prime(n);
    return 0;
}

//分解质因数
#include<iostream>
using namespace std;
void prim(int m);
int main()
{
    int n;
    cout << "please input a num:" << endl; 
    cin >> n;
    prim(n);
    return 0;
} 
                                //分解质因数函数
void prim(int m)                 //m为目标数值 
{
    int i = 2;                   //从最小质数2开始 
    while(i < m)                 //满足质数作为除数小于商值 
    {
        if(m % i == 0)             //满足可整除目标数的质数 
        {
            cout << i << "*";      //输出一个因数 
            m /= i;             // 更新商值赋给m 
        }
        else 
            i++;                 //未整除时寻找下一除数   
    }
    cout << m;                     //最后一个除数 
        
}