实现思路:首先写一个判断素数的方法。
public static boolean isPrime (int num) {
int sqrt = (int) Math.sqrt (num);
for (int i = 2 ; i <= sqrt ; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
接着创建两个线程,我这里用的是匿名内部类创建子类对象,重写run方法,让run方法执行判断素数的结果,如果是素数打印出来,定义一个sum累加和记录10-20的素数和。第二个线程也是一样的。
/**
* Created with IntelliJ IDEA.
*
* @Author: 管坤坤
* @Date: 2021/12/06/8:53
* @Description:编写一个具有两个线程的程序,第一个线程求10~20之间的素数和它们的和,第二个线程求1000~2000之间的素数和它们的和。
*/
public class threadDemo12 extends Thread {
public static boolean isPrime (int num) {
int sqrt = (int) Math.sqrt (num);
for (int i = 2 ; i <= sqrt ; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
public static void main (String[] args) {
Thread t1 = new Thread () {
@Override
public void run () {
int sum = 0;
for (int k = 10 ; k <= 20 ; k++) {
if (isPrime (k)) {
sum += k;
System.out.print (k + " ");
}
}
System.out.println ("10-20的素数和"+sum);
}
};
Thread t2 = new Thread () {
@Override
public void run () {
int sum = 0;
for (int k = 1000 ; k <= 2000 ; k++) {
if (isPrime (k)) {
sum += k;
System.out.print (k + " ");
}
}
System.out.println ("1000-2000的素数和"+sum);
}
};
t1.start ();
t2.start ();
}
}
执行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/c5db351e820e46708bf03eebdb48489a.png)