求最大素因子 |
您所在的位置:网站首页 › 最大素因数是什么 › 求最大素因子 |
原题记录: 对于给定的字符序列,从左至右将所有的数字字符取出拼接成一个无符号整数(字符序列长度小于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 |