求最大素因子

您所在的位置:网站首页 最大素因数是什么 求最大素因子

求最大素因子

2023-10-17 12:07| 来源: 网络整理| 查看: 265

原题记录:

对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于100,拼接出的整数小于2^31,),计算并输出该整数的最大素因子(如果是素数,则其最大因子为自身)

首先什么是某个数a的素因子?

当数i能够整除a且i为素数,那么i就是数a的素因子,最大素因子就是取所有a的素因子中的最大值

实现 穷举法

最简单粗暴的办法就是穷举,i从a开始自减1,每次判断是否能够整除a并且是素数,找到的第一个i就是最大的。

缺点:这种办法效率很低,并且数越大,判断素数的循环次数就越多,对于大数,肯定会超时的

初步改进

每一个数都可以分为n个数的乘积形式(n未知)。由此我们可以把数a中的因子逐步剔除。

从i=2开始,先将2的所有倍数从a中剔除,若a=x*2n,则剔除2的倍数后,a=x,然后i=3,4,···,a-1,依次进行。当然,能够剔除的前提是,a能够整除i,即a%i=0。最后a一定是一个没有因子的素数了,且a一定是最大的,因为凡是小于a的因子都被剔除了。这就是我们要找的最大素因子。

进一步改进

但其实上述方法还有改进的空间,随着剔除的进行,a值会越来越小,实际上当i>sqrt(a)时,凡是小于i的数都被剔除了,因此a不会含有因子i,(即a= x*i,xstr[i]; } unsigned int num=0; unsigned int pf=0; for(int i=0;i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3