#include<iostream>
using namespace std;
int main()
{
int m;
cin >> m;
for (int i = 2; i <= m; ) {
if (m % i == 0)
{
m = m / i;
cout << i << " ";
}
else {
i++;
}
}
return 0;
}
输入一个整数m;
令i从2变换到m;
如果m可以被i整除,则 m = m/i,并且此时i为m的一个素数因子,输出i;
i不变,否则i++;
最终可以输出所有素数因子
为什么无需判断i是否为素数?
因为如果i不是素数,则i一定可以被比i小的整数分解,因此在此之前已经被除掉了。
边界情况:
因为 0 和 1没有素数因子,因此不输出任何数。代码当输入的数<2时不进入循环,因此符合此情况。