C语言编程问题求解答

img


void yinshu_f(int *yinshu,int *n,int num)
{
    for(int j=2;j<=num;++j)
    {
        if(num%j==0)
        {
            int flag=0;
            for(int k=2;k<=sqrt(j);++k)
            {
                if(j%k==0)
                {
                    flag=1;
                    break;
                }    
            }
            if(flag==0)
            {
                yinshu[(*n)++]=j;
                //printf("%d\n",j); 
                yinshu_f(yinshu,n,num/j);
                return ;
            }
                
        }
    }
}

int main()
{                   
    int n,num;
    int i=0;
    scanf("%d",&n);
    
    int yinshu[100],len=0;
    
    for(i=0;i<n;++i)
    {
        scanf("%d",&num);
        yinshu_f(yinshu,&len,num);
        printf("%d=",num);
        for(int i=0;i<len;++i)
        {
            printf("%d",yinshu[i]);
            if(i!=len-1) 
                printf("*");
            else
                printf("\n");
        }
        len=0;
    }
    
    return 0;    
}

#include <stdio.h>
int main()
{
    int n; // 用户输入的整数
    int i; // 循环标志
    scanf("%d", &n);
    printf("%d=", n);
    // n>=2才执行下面的循环
    for (i = 2; i <= n; i++)
    {
        while (n != i)
        {
            if (n % i == 0)
            {
                printf("%d*", i);
                n = n / i;
            }
            else
                break;
        }
    }
    printf("%d\n", n);
    return 0;
}