求素数(多线程练习题)
编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,
第二个线程用来计算100000~200000之间的素数的个数,最后输出结果。
代码实现:
package com.thread;
public class SuShuDemo1 extends Thread{
private long suCount = 0;
public boolean flag = false;
public long getSuCount() {
return suCount;
}
@Override
public void run() {
for (long i=2;i<=100000;i++){
for (long j=2;j<=Math.sqrt(i);j++){
if (i%j==0){
flag=true;
break;
}
}
if (flag==false){
this.suCount++;
}
flag=false;
}
System.out.println(Thread.currentThread().getName()+"素数一共有"+getSuCount()+"个");
}
}
package com.thread;
public class SuShuDemo2 implements Runnable {
private long suShuCount2 = 0;
public long getSuShuCount2() {
return suShuCount2;
}
@Override
public void run() {
for (long i =100000;i<=200000;i++){
long j =0;
for (j =2;j<=i;j++){
if (i%j==0){
break;
}
}
if (i==j){
this.suShuCount2++;
}
}
System.out.println(Thread.currentThread().getName()+"素数一共有"+getSuShuCount2()+"个");
}
}
package com.thread;
public class SuShuDemo1Test {
public static void main(String[] args) {
SuShuDemo1 suShuDemo1 = new SuShuDemo1();
SuShuDemo2 suShuDemo2 = new SuShuDemo2();
Thread thread = new Thread(suShuDemo2);
suShuDemo1.start();
thread.start();
}
}
运行结果:
Thread-0素数一共有9592个 Thread-1素数一共有8392个
作者:泰斗贤若如
微信公众号:去有风的地方飞翔
Github:https://github.com/zyx110
有事微信:zyxt1637039050
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同: “分享的越多,你的价值增值越大”,我们一同在分享中进步,在分享中成长,越努力越幸运。再分享一句话“十年前你是谁,一年前你是谁,甚至昨天你是谁,都不重要。重要的是,今天你是谁,以及明天你将成为谁。”
人生赢在转折处,改变从现在开始!
支持我的朋友们记得点波推荐哦,您的肯定就是我前进的动力。
浙公网安备 33010602011771号