素数因子的乘积为那个数:2*2*2*3*5=120
注意:素数因子为偶数,则一定是2!
#include <iostream>
#include <cmath>
using namespace std;
bool susu(int n)
{
int f = true;
for (int i = 2; i < sqrt(n); i++)
{
if (n%i == 0)
{
f = false;
break;
}
}
return f;
}
int main()
{
int n,i;
cout << "请输入n:";
cin >> n;
//n被除尽程序结束
while (n != 1)
{
//如果n是素数的化直接输出
if (susu(n))
{
cout << n << " ";
break;
}
else
{
/*每次都从二开始除,因为偶数的素数因子只能是2
若不是不是偶数递增寻找适合的技术因子*/
for (i = 2; i < n; i++)
{
if (n%i == 0)
{
n = n / i;
cout << i << " ";
break; //注意这里很关键
}
}
}
}
return 0;
}
运行结果:

参考文章:https://www.cnblogs.com/clwsec/p/11469863.html
方法二:(简化版)上边的break会使i为奇数时也多循环几遍
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,i=2;
cout << "请输入n:";
cin >> n;
while (i<=n)
{
if (n%i == 0)
{
n = n / i;
cout << i << " ";
}
else i++;
}
return 0;
}
本文介绍了一种通过编程实现的素数因子分解算法,详细展示了如何使用C++代码来找出任意整数的所有素数因子,并提供了两种不同的实现方法。第一种方法通过判断是否为素数来分解因子,第二种方法则更为简洁,直接进行除法运算。
1611

被折叠的 条评论
为什么被折叠?



