【欧拉计划】47. Distinct primes factors

【思路】与 Problem 46 类似,我们先取一个足够大的上限 $n$,先欧拉筛得到质数表和合数表。

在判断合数是否有四个不同的质因数时,我们同样可以采取二分,找到不超过它的最大质数,然后倒着循环,统计出它的不同质因数个数即可。

总体时间复杂度为 $\mathcal O(n \log n)$:

阅读更多

【欧拉计划】46. Goldbach's other conjecture

【思路】取一个足够大的上限 $n$,确保最终答案不超过 $n$。我们可以采用欧拉筛得到所有的质数和合数表。注意合数不是按照顺序得到的,需要排序。

接着我们枚举所有在范围内的合数,二分找到不超过它的最大质数,然后判断二者之差是否能表示乘一个完全平方数的两倍即可。

总体时间复杂度为 $\mathcal O(n \log n)$:

阅读更多

【欧拉计划】44. Pentagon numbers

【思路】选定一个足够大的项数上限 $n$,然后 $\mathcal O(n^2)$ 枚举,判断的时候采用二分,总体时间复杂度为 $\mathcal O(n^2 \log n)$:

阅读更多

【欧拉计划】42. Coded triangle numbers

(取 $n$ 为单词数量,$m$ 为所有单词对应数值的最大值)

【思路】我们在 Problem 22 中使用了文件输入索引,同时对其进行操作。这次我们直接将索引每十个元素空一行,并存放于数组中。

接着我们只需要枚举每个单词并判断它所对应的数值是否为三角形数即可。

判断是否为三角形数可以采用二分法,单次时间复杂度为 $\mathcal O(\log \sqrt m)$

总体时间复杂度为 $\mathcal O(n \log \sqrt m)$:

阅读更多

【欧拉计划】41. Pandigital prime

(本题取 $n=9$)

【思路】$\mathcal O(n!)$ 构造全排列并判断是否为质数。由于 $n$ 较大,因此不宜使用欧拉筛。程序的时间复杂度为 $\mathcal O(n!10^{\frac{n}{2}})$:

阅读更多

【欧拉计划】39. Integer right triangles

(本题取 $n=1000$)

【思路】最外层枚举 $p$ 的值,里面两层枚举 $a,b$,从而计算得到是否有符合的 $c$。时间复杂度为 $\mathcal O(n^3)$:

阅读更多