基础练习(VIP)——分解质因数

题目描述
求出区间 [a, b] 中所有整数的质因数分解。

提示
先筛出所有素数,然后再分解。

输入格式
输入两个整数a,b。

输出格式
每行输出一个数的分解,形如 k = a1 * a2 * a3…(a1 ≤ a2 ≤ a3…,k也是从小到大的)

样例输入
3 10

样例输出 (实际输出并没有空格,这里不加空格显示会有问题)
3 = 3
4 = 2 * 2
5 = 5
6 = 2 * 3
7 = 7
8 = 2 * 2 * 2
9 = 3 * 3
10 = 2 * 5

数据范围
2 ≤ a ≤ b ≤ 10000


题解:

#include 
using namespace std;

int main()
{
	int L, R;
	cin >> L >> R;
	
	for (int i = L; i <= R; i ++)
	{
		int x = i;
		bool flag = true;                                        // 用来判断是否加 '*'
		cout << x << "=";
		
		for (int j = 2; j <= x / j; j ++)
			while(x % j == 0)                                    // j 必然为质数 
			{
				x /= j;
				
				if(flag)                                         // 前面有 '*',直接输出质因子  
				{
					cout << j;
					flag = false;                                
				}
				else cout << "*" << j;
			}
			if(x > 1 && flag) cout << x << endl;                 // 唯一大于 sqrt(x) 的质因子 
			else if(x > 1 && !flag) cout << "*" << x << endl;
			else cout << endl;
	} 
	
	return 0;
}

你可能感兴趣的:(蓝桥杯练习系统,数学知识)