C++作业中的难题,大一刚接触!

输入一个整数,输出该整数的所有素数因子。例如,输入120,输出2 2 2 3 5
输出要求:素数分解结果,从小到大排列,用空格隔开,结尾换行

#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
while (n > 1)
{
for (int i = 2; i <= n; i++)
{
if (n % i == 0) { printf("%d ", i); n /= i; break; }
}
}
printf("\n");
}

http://codepad.org/jvD8Wove
2 2 2 3 5

.........素数不用判断吗??

代码可以优化一下
#include
int main()
{
int n, m=2;
scanf("%d", &n);
while (n > 1)
{
for (int i = m; i <= n; i++)
{
if (n % i == 0) { printf("%d ", i); n /= i;m = i; break; }
}
}
printf("\n");
}