编写一个有两个线程的程序,第一个线程用来计算2~100之间的素数的个数,第二个线程用来计算100~200之间的素数的个数,最后输出结果。
时间: 2024-03-09 17:47:29 浏览: 24
好的,下面是一个简单的Python代码实现:
```python
import threading
def count_primes(start, end):
count = 0
for num in range(start, end+1):
if num > 1:
for i in range(2, num):
if num % i == 0:
break
else:
count += 1
return count
t1 = threading.Thread(target=count_primes, args=(2, 100))
t2 = threading.Thread(target=count_primes, args=(100, 200))
t1.start()
t2.start()
t1.join()
t2.join()
total_count = t1.result() + t2.result()
print("2~200之间的素数个数为:", total_count)
```
这个程序创建了两个线程,分别计算2~100和100~200之间的素数的个数。在主线程中,等待两个线程都完成后,计算总的素数个数并输出结果。
相关问题
编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数,最后输出结果
好的,这是一个使用 Python 语言编写的多线程程序:
```python
import threading
# 判断是否为素数的函数
def is_prime(n):
if n <= 1:
return False
if n == 2 or n == 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
while i * i <= n:
if n % i == 0 or n % (i + 2) == 0:
return False
i += 6
return True
# 第一个线程用来计算2~100000之间的素数的个数
def count_primes1():
count = 0
for n in range(2, 100001):
if is_prime(n):
count += 1
print("2~100000之间的素数的个数为:", count)
# 第二个线程用来计算100000~200000之间的素数的个数
def count_primes2():
count = 0
for n in range(100001, 200001):
if is_prime(n):
count += 1
print("100000~200000之间的素数的个数为:", count)
# 创建两个线程
t1 = threading.Thread(target=count_primes1)
t2 = threading.Thread(target=count_primes2)
# 启动两个线程
t1.start()
t2.start()
# 等待两个线程结束
t1.join()
t2.join()
# 输出结果
print("总共的素数个数为:", count1 + count2)
```
这个程序创建了两个线程,分别计算2~100000之间的素数的个数和100000~200000之间的素数的个数。主线程等待两个计算线程结束后,输出总共的素数个数。
用java编写一个有两个线程的程序,第一个线程用来计算2~100000之间的素数的个数,第二个线程用来计算100000~200000之间的素数的个数,最后输出结果
好的,这是一个使用 Java 语言编写的多线程程序:
```java
public class PrimeNumberCount {
// 判断是否为素数的方法
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
if (n == 2 || n == 3) {
return true;
}
if (n % 2 == 0 || n % 3 == 0) {
return false;
}
int i = 5;
while (i * i <= n) {
if (n % i == 0 || n % (i + 2) == 0) {
return false;
}
i += 6;
}
return true;
}
public static void main(String[] args) throws InterruptedException {
// 第一个线程用来计算2~100000之间的素数的个数
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
for (int n = 2; n <= 100000; n++) {
if (isPrime(n)) {
count++;
}
}
System.out.println("2~100000之间的素数的个数为:" + count);
}
});
// 第二个线程用来计算100000~200000之间的素数的个数
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
for (int n = 100001; n <= 200000; n++) {
if (isPrime(n)) {
count++;
}
}
System.out.println("100000~200000之间的素数的个数为:" + count);
}
});
// 启动两个线程
t1.start();
t2.start();
// 等待两个线程结束
t1.join();
t2.join();
// 输出结果
System.out.println("总共的素数个数为:" + (count1 + count2));
}
}
```
这个程序创建了两个线程,分别计算2~100000之间的素数的个数和100000~200000之间的素数的个数。主线程等待两个计算线程结束后,输出总共的素数个数。