【题目描述】
把一个合数分解成若干个质因数乘积的形式(即求质因数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。
输入一个正整数n,将n分解成质因数乘积的形式。
【输入】
一个正整数n。
【输出】
分解成质因数乘积的形式。质因数必须由小到大,见样例。
【输入样例】
36
【输出样例】
36=2*2*3*3
思路:
首先初始化变量 d 为 2,这是最小的质数,之后在每次循环中,程序检查 n 是否可以被 d 整除。
如果能被整除,程序会执行以下步骤:
如果 flag 是 true,则直接打印出 d,并将 flag 设置为 false,表示已经打印了一个因数。
如果 flag 是 false,则打印出 "*" 和 d,表示这是第二个及以后的因数。
将 n 除以 d,更新 n 的值。
如果 n 不能被 d 整除,程序将 d 的值增加 1,以便在下一次循环中尝试下一个可能的因数。
#include<iostream>
using namespace std;
int main()
{
int n; cin >> n;
int d = 2;
bool flag = true;
cout << n << "=";
while (n != 1) {
if (n%d == 0) {
if (flag) {
cout << d;
flag = false;
}
else cout << "*" << d;
n /= d;
}
else d++;
}
}