我正在编写一种方法来查找高达n的素数(埃拉托色尼筛),是的,这是为了家庭作业。我希望在我编写的方法中提高性能。在过去的几天里,我一直在调整这个,但无法遵循给定的伪代码并提高性能。
伪代码如下:
创建一个数字队列来处理
用包含2到n的整数填充队列
创建一个空的结果队列来存储素数
重复以下步骤:
通过从数字队列中删除第一个值来获取下一个素数p
将p放入素数的结果队列
循环通过数字队列消除所有可被p整除的数字
同时(p小于n的平方根)
所有剩余值都是素数,因此将它们转移到素数结果队列
这是我目前的方法:
public static Queue<Integer> getPrimes(int n) throws IllegalArgumentException
{
if (n<2)
{
throw new IllegalArgumentException();
}
Queue<Integer> integers = new LinkedList<Integer>();
Queue<Integer> primes = new LinkedList<Integer>();
for (int i = 2; i <= n ; i++) {
integers.add(i);
}
boolean[] isMultiple = new boolean[n + 1];
for(int iterate = integers.remove(); iterate <= n; iterate++)
{
if(!isMultiple[iterate])
{
primes.add(iterate);
for(int multiples = iterate * iterate; multiples >= 0 && multiples <= n; multiples += iterate)
{
isMultiple[multiples] = true;
}
}
}
return primes;
}
作为第一个小步骤,您可以删除整数
队列并将其替换为常见的for
循环:
for (int iterate = 2; iterate < n; iterate++)
{
if (!isMultiple[iterate])
{
...
}
}
首先可以用两种方法优化它:1)不需要整数
linkedlist。而是使用一个简单的for
循环。
2)使用for循环后,您可以首先删除所有偶数,因为它们显然可以被2整除。然后遍历奇数。从而将循环减半。
代码段:
primes.add(2);
for(int i=2;i*i<=n;i++)
{
isMultiple[2*i]=true;
}
for(int i=3;i*i<=n;i+=2)
{
if(!isMultiple[i])
{
primes.add(i);
for(int j=i*i;j<n;j+=i)
{
isMultiple[j]=true;
}
}
}
return primes;
有没有一个简单的pari/gp程序可以筛选k*n c(其中n和c是固定的)形式的数,直到某个素数p,并且k被限制在某个范围内(即k=1,10000,) 伪代码: 换句话说,从整数列表 T 开始 检验素数范围 p 中的第一个素数,并从列表 T 中删除整数 k,使得 k*n c 可以被 p 整除。然后测试下一个素数,依此类推。执行此操作,直到达到筛子返回的极限,或打印候选列表。感谢您的帮助!
我正在使用自定义列表视图来显示图像和文本。下面是我的列表视图项的布局文件和后面的代码。我会在帖子的底部解释我的问题。 下面是将必要信息加载到列表视图中的后端代码。 12-21 03:54:20.827:D/OpenGrenderer(1248):启用调试模式0 12-21 03:54:20.955:我/编舞(1248):跳过36帧!应用程序可能在其主线程上做了太多的工作。 12-21 03:54:
我们看到ORC和带分区的ORC执行相同(有时我们看到B/W ORC分区和不带分区的ORC差别很小)。带分区的ORC会比ORC表现更好吗。带分区桶的ORC会比ORC分区表现更好吗?。我看到每个ORC分区文件都接近50-100 MB,ORC带外分区(每个文件大小为30-50 MB)。 **注:120 GB的Un压缩数据被压缩为17 GB的ORC文件格式
我有这个在重复播放 来自网站数组的每个网站对象如下所示: 问题:如何将过滤器应用于上述循环,使其仅显示属性为空数组的元素? 我尝试过的事情: (控制台中没有错误,但会过滤掉所有内容) (与我想要的相反,只显示组不是空数组的项目) (如果我用null代替[]来表示没有值,这是可行的,但看起来真的很混乱……因为我需要经常注意组属性变为空,并手动将其设置为null)
我们正在尝试使用Apache Phoenix驱动程序来提高HBase设置的读取性能,以对抗约1150万条记录的数据集。 HBase 0.98 Apache Phoenix driver 4.3.1 Squirrel Client 3.2 该表由21列组成,下面是DDL语句: 我们已经对表执行了salting(salt buckets=3),并在所有列上创建了一个辅助索引(不可变索引)。 我们执行以
我一直在尝试Codility.com的编码挑战,这是我尝试的问题之一: 给出一个由 N 个整数组成的非空零索引数组 A。一对整数 (P, Q),使得 0 ≤ P 例如,数组A如下: 包含以下示例切片: 切片 (1, 2),其平均值为 (2 2) / 2 = 2;切片 (3, 4),其平均值为 (5 1) / 2 = 3;切片 (1, 4),其平均值为 (2 2 5 1) / 4 = 2.5。目标是