|
1
3
您可以预计算大小为N+1的数组A,该数组在A[i]处存储小于或等于i的半素数。然后是一个问题
这个数组可以有效地计算:设P是一个小于或等于N/2的素数数组。然后(在类似java的伪代码中):
这是通过使用
这个程序的Python版本需要0.07秒来预计算
|
|
|
2
3
得分为100%的Java解决方案如下:
整个算法是有效的
|
|
|
3
1
Ruby 100%溶液
|
|
|
4
1
我的解决方案使用Eratosthenes筛子,使得数N的最小素数因子存储在数组因子[N]中。 然后,如果Factor[N/Factor[N]]=0,我们有一个半素数递增一个和扫描。 A[r]=包括性扫描[Q[r]]-包括性扫描[P[r]-1]。
|
|
|
5
1
github 在cpp中:
|
|
6
0
这是一个有趣的问题。我试过了,得到了88%的分数。 以下是我的策略:
我不太清楚为什么我得了88%的分数。(我错过了什么) 但最有趣和值得注意的部分是检查给定数字是否为半素数的策略:
与解决方案无关,但与我的
希望这有帮助。:) |
|
|
7
0
|
|
|
8
0
这里是解决方案的Javascript版本,但它是55%:
|
|
|
9
0
您的代码:
我已经标出了要注意的行。 我会这样做:
这是基于以下事实:
|
|
|
10
0
这是我的100%个C++。我用的是前缀。时间复杂度O(N*log(log(N))+M)。
|
|
|
11
0
100%的溶液分解。 https://app.codility.com/demo/results/trainingGVNHKU-MA5/ 首先,使用埃拉托什尼筛来确定什么是prime。
接下来,确定该数字是否为半素数。如果它的两个因子都是素数,那么它就是半素数。
然后扫描N个数的范围,计算递增半素数的斜率。只需测量一个切片内的斜率,就可以看到该切片中出现了多少个半素数。
https://github.com/niall-oc/things/blob/master/codility/count_semiprimes.py 更多关于 https://github.com/niall-oc/things/blob/master/codility/ |
|
|
12
0
我采取了稍微不同的方法。该线程中的其他有效解决方案构建了一个规则的Eratosthenes(F)筛,其中记录了槽中最小的素数因子,因此半素数是那些F[x]>0和F[x//F[x]]==0,即除以最小的素数因子得到另一个素数。
那么半素数就是那些正好有2个素数因子的位置。 之后,我构建了一个半素数前缀计数,用它在固定时间内回答查询。
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |