求素数(多线程练习题)
编写一个有两个线程的程序,第一个线程用来计算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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
我不能保证我所说的都是对的,但我能保证每一篇都是用心去写的,我始终认同: “分享的越多,你的价值增值越大”,我们一同在分享中进步,在分享中成长,越努力越幸运。再分享一句话“十年前你是谁,一年前你是谁,甚至昨天你是谁,都不重要。重要的是,今天你是谁,以及明天你将成为谁。”
人生赢在转折处,改变从现在开始!
支持我的朋友们记得点波推荐哦,您的肯定就是我前进的动力。