c语言中for循环相关问题

这个分解质因数中,第二个for循环有啥用,j变量的意义在哪


#include<stdio.h>


int main()
{
    int n, i, j, k = 1;
    scanf("%d", &n);
    printf("%d=", n);
    for (i = 2; i <= n; i++)
    {
        for (j = 2; j < i; j++)
            if (i%j == 0) break;
        if (j >= i)
            while (n%i == 0)
            {
                n = n / i;
                if (k == 1) { printf("%d", i); k++; }
                else printf("*%d", i);
            }
    }
    return 0;
}

#include<stdio.h>
 
 
int main()
{
    int n, i, j, k = 1;
    scanf("%d", &n);
    printf("%d=", n);
    for (i = 2; i <= n; i++)
    {
        
            while (n%i == 0)
            {
                n = n / i;
                if (k == 1) { printf("%d", i); k++; }
                else printf("*%d", i);
            }
    }
    return 0;
}

没啥用。。你run过了吗

有用啊

第二个for循环的作用是判断因子 i 是否是质数,是质数再判断是否是 n 的因子。其实第二个for循环在这里没啥用,多余的判断。代码修改如下,供参考:

#include <stdio.h>
int main()
{
    int n, i=2, k=0;
    scanf("%d", &n);
    while (n != 1)
    {
          if (n % i == 0)
          {
              if(k==0) printf("%d = ",n);
              printf(k++ == 0 ? "%d" : "*%d",i);
              n /= i;
          }
          else {
              i++;
          }
    }
    return 0;
}