质因数分解的一点点疑惑

下面的代码来自之前的一个人写的博客,对于是否输出*用n/j>2来判断,我改成n>j,试了许多数也对,希望有人能给我举出反例或者告诉我n>j是否可行


#include
#include
int Isprime(int n)     //函数功能--判断是否为素数
{
    for (int i = 2; i<sqrt(n); i++)
        if (n % i == 0) return 1;
    return 0;
}
void fun(int n)         //函数功能--质因数分解
{
    int i = 0, j;
    int m = n;
    for (j = 2;j < m/2; j++)     //从小到大寻找n的因数
            while(n % j == 0)   //当n%j(因数)== 0时,继续分解
            {
                printf("%d",j);
                if(n/j>2)    //n>j我试了好多感觉也对 
                printf("*");
                n /= j;
            }
}
int main()
{
    int n;
    int c;
    scanf("%d", &n);      //输入要分解的数
    c = Isprime(n);       //判断是否为素数
    if (c)  fun(n);        //如果不是素数则进行分解
    else printf("it is a prime\n");   //如果是素数则不用分解
}
//输入90,输出2*3*3*5

我一般先n/=j
然后再判断if(n>1)printf('*')

假设输入4呢?
现在的代码假如输入16呢