这个题一开始会超时,因为出现了一个很大的次数,在进行质因子判断时循环了太多次。
后面看了大家的思路,发现可以优化,即在剩下那个数是质数时,直接输出该数,这样能大大简化计算更快得出答案
#include <stdio.h>

long int isprime(int a){
    int flag = 1;
    if(a == 2 || a == 3){
        flag = 1;
    }
    else{
        for(long int i = 2;i<=(int)sqrt(a);i++){
            if(a%i == 0){
                flag = 0;
                break;
            }
        }
    }
    return flag;
}
int main(){
    long int a;
    scanf("%ld",&a);
    for(long int i = 2;i<=a;i++){
        if(isprime(a)){                //优化点,每次得到的a先进行判断,如果为质数,输出
            printf("%ld ",a);
            a /= a;
        }
        if(a%i == 0 && isprime(i)){
            printf("%ld ",i);
            a /= i;
            i = 1;
        }
    }
    return 0;
}