2032:【例4.18】分解质因数
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 5683 通过数: 3599
【题目描述】
把一个合数分解成若干个质因数乘积的形式(即求质因数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。
输入一个正整数n,将n分解成质因数乘积的形式。
【输入】
一个正整数n。
【输出】
分解成质因数乘积的形式。质因数必须由小到大,见样例。
分析:这道题有点意思。
步骤:
1.输入一个数据n之后,开始使用循环进行分解质因数;
2.在第一个循环里面嵌套一个for循环,里面的 i 每次 从2开始遍历,当符合 为n的质因数 且 为质数 这两个条件之后,输出,然后将n除i,将结果赋给n。
3.循环进行第二步,直到n的值变为1,停止循环,任务完成。
#include<iostream>
using std::cin;
using std::cout;
int main()
{
int n;
cin >> n;
int num = 0;//记录质因数的个数
cout << n << "=";
while (n != 1)
{
int i = 2;//每次从2开始找质因数
for (;; ++i)
{
//先判断是否为质数
bool flag = true;
//记录i是否是质数
for (int j = 2; j *j<= i; ++j)
{
if (i % j == 0)//满足条件说明不是质数
{
flag=false;
break;
}
}
if (flag)
{
if (n % i == 0)
{
num++;
if (num != 1)//第一个质因数前面不用*
{
cout << "*";
}
cout << i;
break;
}
}
}
n /= i;//记得这一步不要少
}
}