求质数的BitSet算法
求质数的BitSet算法
小小明童鞋 发表于1年前
求质数的BitSet算法
  • 发表于 1年前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

import java.util.*;

public class BitSetTest {

	public static void main(String[] args) {

		long begin = System.currentTimeMillis();

		BitSet sieve = new BitSet(54115297);

		int size = sieve.size();

		for (int i = 2; i < size; i++)

			sieve.set(i);

		int finalBit = (int) Math.sqrt(sieve.size());

		//这个for if 写的太风骚
		for (int i = 2; i < finalBit; i++)

			if (sieve.get(i))

				for (int j = 2 * i; j < size; j += i)

					sieve.clear(j);

		int counter = 0;

		for (int i = 1; i < size; i++) {

			if (sieve.get(i)) {
				++counter;
			}
			//求 54115291是第几个质数
			if (sieve.get(i) && i == 54115291) {

				System.out.printf("%5d", i);
				System.out.println();
				long end = System.currentTimeMillis();

				System.out.println("求第" + counter + "个质数耗时:" + (end - begin)
						+ "毫秒");
			}

		}

	}

}

 

标签: java 质数 算法
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 62
码字总数 23089
×
小小明童鞋
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: