前言
欧拉计划是学习数学、数论选手遨游的海洋,700+道题让你我越来越强。
打卡网址链接: link.
一 题目描述
链接: link.
至于输入描述、范围读者自己意会,懂得都懂。
二 解题思路
对于学过大整数分解的同学,肯定会第一时间想到下面的分解公式
求的是1-n的最小公倍数,自然想到每个素因子的个数得选择1-n中出现最多的次数,
即对于素因子
取最多的次数,即对1-n里的每个数ni,分解后pi取最大值ki放在筛素数的数组中保存。
例如1 2 3 4 5 6 7 8 9 10
筛完素数后,素数数组为 2 3 5 7
而对于素数pi=2时,ki应该取几呢?
答案一目了然,8中最多可以提取3个2,故ki=3;
同理素数3取9含有2个,5含有1个,7含有1个。
最终1-n的最小公倍数为2223357=2520;
即对于1-n的最小公倍数公式,
三 总结扩展
本fw想到了是否可以用于求解二个不相邻的数或者n个不相邻的数的lcm,(因为本fw之前对于此类问题都是直接套循环二二求之。),答案是显然可以的。
通常对于二个数的lcm求解,最多的是欧几里得的辗转相除法。
而对于多个数的gcd或lcm,只能依靠循环二二求gcd或lcm。
而对于本题,又有了个新的想法、解法。
即:欧拉筛+ki判断最后套用公式。
复杂度O(n)。
四 每日共勉
荣辱不惊,看庭前花开花落.去留无意,望天上云卷云舒。
用符合现在的话简单点说,不要没见过世面天天看jk小姐姐,有没有对象无所谓,看题目wa还是ac。