2032:【例4.18】分解质因数

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;//记得这一步不要少
	}
}

 

Guess you like

Origin blog.csdn.net/LWX3289765163/article/details/121363221
Recommended