124 Ordered Radicals
的根函数,,定义为其所有不同质因子之积。例如,, 所以
令 是求得了前 个 之后排序,第 个所对应的 。
从 1 到 100,000,求 ,问题是要求 。
这道题的第一步是分解质因数。
为此,我先生成了一个数组 primes
,放了从 1 到 100,000 中的质数部分,从小到大排列,这很重要,求质因数用得着。
拿到所有的质因数之后,求积就可以得到对应的 。
对 排序,为了简单起见,我把 和 打包在一起,并且实现了 IComparable
,便于之后的排序。排序规则是以 为主键, 一样的情况下,按照 排序。
public class NAndRadN : IComparable
{
public int n;
public long rad;
public int CompareTo(object that)
{
var t = that as NAndRadN;
if (this.rad == t.rad)
{
return this.n.CompareTo(t.n);
}
else
{
return this.rad.CompareTo(t.rad);
}
}
}
准备工作做好之后,写一个 for
循环,把 1 到 100,000 的 算出来。排序,找到第 10,000 个数字,输出即可。