AcWing867. 分解质因数
1、题目:
给定n个正整数ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。
输入格式
第一行包含整数n。
接下来n行,每行包含一个正整数ai。
输出格式
对于每个正整数ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。
每个正整数的质因数全部输出完毕后,输出一个空行。
数据范围
1≤n≤100,
1≤ai≤2∗109
输入样例:
2
6
8
输出样例:
2 1
3 1
2 3
2、基本思想:
①暴力枚举:根据求质因数的基本定义计算,时间复杂度为O(n);
②优化:根据性质(n中最多只包含一个大于sqrt(n)的质因子,如果有多个那么相乘就大于n了)发现可以先枚举2到sqrt(n)算出小于等于sqrt(n)之后最后留下的那个就是大于sqrt(n)的质因子,时间复杂度最坏情况下是O(√n),最好情况下是O(logn)。
3、核心步骤:
void divide(int x)
{
for (int i = 2; i <= x / i; i ++ )
{
if (x % i == 0)//只要成立,i一定是质数

本文详细介绍了一种高效的质因数分解算法,包括其基本思想、核心步骤及C++实现代码。通过优化的方法,能够在O(√n)的时间复杂度内完成质因数分解,适用于1≤n≤100个数,每个数不超过2*10^9的场景。
最低0.47元/天 解锁文章
502

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



