以下是实现该程序的代码:
```c
#include
int main()
{
int n, i;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("%d的所有素数因子为:", n);
for (i = 2; i <= n; i++) {
while (n % i == 0) { // 如果 i 是 n 的因子
printf("%d ", i); // 输出 i
n /= i; // 将 n 除以 i,继续判断是否还有 i 这个因子
}
}
return 0;
}
```
程序中使用了一个循环来遍历 2~n 中的每一个数,对于每个数,如果它是 n 的因子,则将其输出,并将 n 除以它,继续判断是否还有这个因子。在判断一个数是否是 n 的因子时,可以使用取模运算符 % 来判断,如果 n % i 的结果为 0,则说明 i 是 n 的因子。