java的BitSet位集
2024-01-09 23:16:43
2024.1.3 java的BitSet位集
目的: 计算2-2000000之间的素数
import java.util.BitSet;
/**
1. @author HK
*/
public class Sieve {
public static void main(String[] args) {
int n = 2000000;
long start = System.currentTimeMillis();
BitSet bitSet = new BitSet(n + 1);
int count = 0;
int i;
for (i = 2; i <= n; i++) {
bitSet.set(i);
}
i = 2;
while (i * i <= n) {
if (bitSet.get(i)) {
count++;
int k = 2 * i;
while (k <= n) {
bitSet.clear(k);
k += i;
}
}
i++;
}
while (i <= n) {
if (bitSet.get(i)){ count++;}
i++;
}
long end=System.currentTimeMillis();
System.out.println(count+"素数");
System.out.println((end-start)+"毫秒");
}
}
采用的是埃拉托斯特尼筛选法计算法:有兴趣可以自己看看
1.创建一个bitSet对象默认为每个位为0
2. set(i)方法将该位上改为1
3. get(i)方法获取当前状态1为true 0为false
4. clear(k)方法将该位上改为0
输出结果:
148933
63毫秒
文章来源:https://blog.csdn.net/Takeit_easy/article/details/135375363
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!