首页 > 其他分享 >分解质因数

分解质因数

时间:2023-11-13 23:00:23浏览次数:24  
标签:遍历 int 质数 因子 算法 分解 质因数

引言

本文主要解决的问题是如何将一个数分解成多个质因子的乘积,并求出各个质因子的个数

算数基本定理:
任何一个大于 1 的自然数 N,如果 N 不为质数,那么 N 可以唯一分解为有限个质数的乘积

\[N = p_1^{a_1}p_2^{a_2}p_3^{a_3} \cdots p_n^{a_n} \]

该算法的目的就是求解该式中的 \(p_i\) 和 \(a_i\)

该算法先结合代码理解比较好理解

代码

void Divide(int x)
{
    for (int i = 2; i <= x / i; i ++ )
        if (x % i == 0)
        {
            int s = 0;
            while (x % i == 0) x /= i, s ++ ;
            std::cout << i << ' ' << s << "\n";
        }

    if (x > 1) std::cout << x << ' ' << 1 << "\n";

    return ;
}

算法原理

首先第一层循环从 1 遍历,判断 i 是否为 x 的质因子。

若 x % i == 0,则 i 一定为 x 的质因子。

证明:
设 i 为合数,那么根据算数基本定理,其能分解为多个质因子相乘的形式,其质因子一定比 i 小
由于 i 是从小到大遍历,所以 i 的质因子一定在前面就被遍历到
所以 i 不是合数,只能为质数

随后求出 i 的个数,并将 x 不断除以该质因子直至除净,就可以得到其中的一个质因子 a 和数量 p

最后若 x 大于 1,就说明 x 本身即为质因子,输出 x 即可

标签:遍历,int,质数,因子,算法,分解,质因数
From: https://www.cnblogs.com/NachoNeko/p/17830540.html

相关文章

  • 线性代数 · 矩阵 · Matlab | 满秩分解代码实现
    背景-矩阵的满秩分解:若A为m×n矩阵,rank(A)=r,则存在Fm×r、Gr×n,使得A=FG。其中,F列满秩,G行满秩。求满秩分解的方法:得到A的行最简形式B;对于B里某列为1该列中其他元素为零的列,取A的对应列,组成F;取B的前r行组成G。function[F,G]=fullra......
  • 二. 点云主成分分析之奇异值分解与特征值分解
    1.前言我上篇文章的最后提到了通过SVD求解ICP得到的奇异值左正交矩阵的的坐标系和PCA非常相似,这篇文章我们来看一下两者的相似处,并从数学上给出解释。读者可以看下上篇文章的结尾的图,图1展示了两组存在一一对应关系的点,点集B是点集A经某个欧式变换得到的。[奇异值分解在3D视觉......
  • CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵重构分量 程序语言为matlab
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • 线性代数 · 矩阵 · Matlab | Cholesky 分解代码实现
    (搬运外网的代码,非原创;原网址)(其实是专业课作业,但感觉国内博客没有合适的代码实现,所以就搬运到自己博客了)背景-Cholesky分解:若A为n阶实对称正定矩阵,则存在非奇异下三角矩阵L,使得A=LL^T。是特殊的LU分解(下三角上三角分解)。若限定L的对角元素为正,则这种分解......
  • 【Python】基于非侵入式负荷检测与分解的电力数据挖掘
    前言本案例将根据已收集到的电力数据,深度挖掘各电力设备的电流、电压和功率等情况,分析各电力设备的实际用电量,进而为电力公司制定电能能源策略提供一定的参考依据。更多详细内容请参考《Python数据挖掘:入门进阶与实用案例分析》一书。一、案例背景为了更好地监测用电设备的能耗......
  • 质因数分解
    acwing的最基础模板https://www.acwing.com/blog/content/406/知乎大佬给的各种数据范围模板大全:https://zhuanlan.zhihu.com/p/591377294对于其中的一部分进行提炼形成自己的模板1.使用场景:假设有n个数需要分解,每个数最大可能是N,下面给出的这种代码的时间复杂度是\(O(nlogN)......
  • 第 367 场周赛(双指针,集合(upper_bound&lower_bound),前后缀分解)
    2903.找出满足差值条件的下标I2905.找出满足差值条件的下标II这两个题只有数据范围上面的差距 这个题我们大体思路是维护双指针,枚举数字,维护集合。这是灵神视频的代码classSolution:deffindIndices(self,nums:List[int],indexDifference:int,valueDiffere......
  • 基于模态分解联合小波阈值去噪(汇总)
    ​ 1.MATLAB:基于EMD联合小波阈值去噪算法代码见:基于EMD分解联合小波去噪(mbd.pub)基于EMD(经验模态分解)联合小波阈值去噪算法是一种常用于信号处理和图像处理领域的算法。它主要依赖于经验模态分解和小波阈值去噪两个步骤。经验模态分解(EMD)是一种将信号分解成多个固有模态函......
  • 信号的模态分解(汇总篇)
    ​ 1.MATLAB:EMD(经验模态分解)代码地址:EMD(经验模态分解)(mbd.pub)在机器学习和信号处理中,“EMD”可指代经验模态分解(EmpiricalModeDecomposition),它是一种非线性时频分析方法。经验模态分解是一种将信号分解为一系列固有模态函数(IntrinsicModeFunctions,简称IMF)的方法。IMF......
  • 什么是PMP里的组织分解结构(OBS)?
    在PMP和PMI的PMBOK(项目管理知识体系指南)中,OBS代表“组织分解结构”(OrganizationalBreakdownStructure)。OBS是一种项目管理工具,用于表示组织的层次结构,特别是与特定项目相关的部分。它为项目中的工作分配到不同的组织单位或团队提供了一个清晰的框架。以下......