改进了一下超时的代码,进入for循环之后立刻判断此时的n是不是素数 如果是素数直接打印n跳出循环就好了 不需要从2一直加到n
#include <stdio.h>
#include <math.h>
int func(int x)
{
    int flag=1;
    for(int i=2;i<=sqrt(x);i++)
    {
        if(x%i==0)
        {
            flag=0;
            break;
        }
    }
    return flag;
}
int main() {
    int n;
    scanf("%d", &n);
    if (n == 1) {
        printf("1");
    } else {
        for (int i = 2; i <= n; i++) {
            if(func(n))
            {
                printf("%d",n);
                break;
            }
            while (n % i == 0) {
                printf("%d ", i);
                n /= i;
            }
        }
    }
    return 0;
}