i从2开始遍历,直到i*i<=n时即出循环,遍历时输出并去除n从小到大的质因子,在最后如果n最后是一个素数,也需要输出,先判断是不是1
#include <stdio.h> void fun(long n) { for(long i=2;i*i<=n;i++) { //输出并去除n的质因子; while(n % i == 0) { printf("%d ",i); n /= i; } } //如果n最后是一个素数,也需要输出,先判断是不是1; if(n != 1) { printf("%d ",n); } } int main() { long n; while(scanf("%ld",&n) != EOF) { fun(n); } return 0; }