求救,如何线程池求质数?

老顽童 2018-01-29 04:34:39
求不大于N的最大50个质数。N=9223372036854775807
我现在单线程程序写好了,求大牛改为线程池的。谢谢


//package Hello;

import java.util.*;
import java.math.*;
import java.io.*;


public class Prime
{
public static boolean prime(long n)
{
long i,k;
k= (long )Math.ceil(Math.sqrt(n));
for(i=2;i<=k;i=i+1)
{
if(n%i==0)
return false;
}
return true;
}

public static void main(String args[])
{
long li,counter=0;
int i;
//JAVA不支持UInt64!!!!
//double n=18446744073709551615.0;
long s,n=9223372036854775807L;

long start=System.currentTimeMillis();


while(counter<50)
{
if(prime(n))
{
counter++;
System.out.println("prime("+counter+")="+n);
}
}
long end=System.currentTimeMillis();
System.out.println("time used: "+(end-start)+" ms");
}
}


...全文
638 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendellup 2018-02-01
  • 打赏
  • 举报
回复
#1方法很赞,再抛砖引玉提供一种~ 采用生产者消费者模式, 将待处理的数放入队列中,启用多线程, 每个线程每次取队列中的一个数出来处理。
oyljerry 2018-01-29
  • 打赏
  • 举报
回复
根据线程数,把你的数分成几份,比如4个线程,就把N对4求余,分成四块数据,一个线程处理一块

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧