SDNU-1522陆历川学数学(求最大素因子)
先看题:
题目描述
题目链接
陆历川很热爱数学,最近他学了质数,他被质数深深的吸引了,但是陆历川有个习惯,他喜欢给一些东西编号,所以他决定给所有的质数编号,例如给2编号1,3编号2,5编号3……..这样2,3,5就是质数里面的大当家,二当家和三当家了,陆历川现在知道了这些编号,现在他会给你一个数,他想知道这个数的所有的质因子里面的最大编号是多少?
注:0和1的编号都是0。
Input
一个自然数N(0<= N <= 1000000)
多组输入样例
Output
最大编号
Sample Input
1 | 1 |
Sample Output
1 | 0 |
题解
思路: 只要求求最大的素因数的所在编号。我一开始的思路是求出这个数的质因数, 然后排序找最大, TLE,之后不论是遍历n还是遍历素数集, 都TLE了,搜了一下才想到在编号上做文章。
根据这一题, 埃氏筛的那一点点瑕疵就没有了。 具体怎么变得请看下面代码注释
ac代码
1 | //#include <bits/stdc++.h> |
举一反三:如何求出这个最大素因子?
根据上面的题我们可知求出了这个最大素因子的编号,我们直接输出pri[ma[i] - 1]
就可,当然,根据这个题很容易看出, 要是脱落了这个题呢?
1 | 恰似你一低头的温柔,娇弱水莲花不胜寒风的娇羞, 我的心为你悸动不休。 --mingfuyan |
原文作者: Mingfu Yan
原文链接: https://solodance.top/2020/06/26/SDNU-1522陆历川学数学(求最大素因子)/
版权声明: 转载请注明出处(必须保留作者署名及链接)