解题思路

这题有点恶心啊。
分解质因数,从最小的开始不停除法,除到为1。或者,除到最后除不了,就输出自己。

两个坑。第一个就是这个数本身是个质数。第二就是可能会超时,除到它的平方值即可。
还可以判断下除数是不是质数,但是呢,没必要,因为会增加判断的次数,得不偿失。

#include<stdio.h>
#include<math.h>

int main()
{
    long num = 0;
    int i;

    while (scanf("%ld", &num) != EOF) {
        int maxi = sqrt(num);
        for (i = 2; i <= maxi; i++) {
            while (!(num % i)) {
                num /= i;
                printf("%d ", i);
            }
        }
        if (num != 1) {
            printf("%d ", num);
        }

        printf("\n");
    }
    return 0;
}