多线程素数

该博客介绍了如何利用Java的多线程技术,对用户输入的整数列表进行素数判定。程序创建10个线程分别处理列表中的数字,并将结果存储到另一列表,用户可以实时查询判定结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用多线程编程,实现素数的判定。待判定的整数有键盘录入后存放在一个列表, 创建10个线程从列表中取出进行判定,判定结果存入到另一个列表,`用户可以通过键盘查询判定的结果

/**
 * 使用多线程编程,实现素数的判定。待判定的整数有键盘录入后存放在一个列表,
 * 创建10个线程从列表中取出进行判定,判定结果存入到另一个列表,
 * 用户可以通过键盘查询判定的结果
 */
package com.daiinfo.java;

import java.util.List;
import java.util.Set;

public class PrimeGenerator implements Runnable {
	List<Integer> sourse;
	Set<Integer> dest;
	/**
	 * 
	 * @param sourse
	 * @param dest
	 */

	public PrimeGenerator(List<Integer> sourse, Set<Integer> dest) {
		super();
		this.sourse = sourse;
		this.dest = dest;
	}


	@Override
	public void run() {
		// TODO Auto-generated method stub
		for (int i=0;i<10;i++) {
			if(isPrime(sourse.get(i))) {
				dest.add(sourse.get(i));
			}
		}
		
	}
	/**\
	 * 判断一个整数是否为素数,如果是则返回true,否则返回false
	 * @param integer
	 * @return
	 */


	private boolean isPrime(long number) {
		
		// TODO Auto-generated method stub
		//如果一个数小于等于2,则是素数
		if(number==2) {
			return true;
		}
		//如果一个数大于2,则判断该数是否能被2和number-1之间的数整除
		for(long i=2;i<number;i++) {
			if((number%i)==0) {
				return false;
			}
		}
		return true;
	}
	

}

```java
package com.daiinfo.java;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class TestPrime {
	public static void main(String[] args) {
		//创建一个定长集合,只能存放10个元素
		List<Integer> list=new ArrayList<Integer>(new Integer(10));
		Set<Integer> dest=new HashSet<Integer>();
		Scanner sc=new Scanner(System.in);
		
		while(list.size()<10) {
			System.out.println("请输入第"+(list.size()+1)+"个大于1的数字:");
			int num=sc.nextInt();
			if(num>1) {
				list.add(num);
			}else {
				System.out.println("非法数据");
			}
		}
		PrimeGenerator p=new PrimeGenerator(list,dest);
		Thread t1=new Thread(p);
		Thread t2=new Thread(p);
		Thread t3=new Thread(p);
		Thread t4=new Thread(p);
		Thread t5=new Thread(p);
		Thread t6=new Thread(p);
		Thread t7=new Thread(p);
		Thread t8=new Thread(p);
		Thread t9=new Thread(p);
		Thread t10=new Thread(p);
		t1.start();
		t2.start();
		t3.start();
		t4.start();
		t5.start();
		t6.start();
		t7.start();
		t8.start();
		t9.start();
		t10.start();
		//Set转List集合
		ArrayList<Integer> list2=new ArrayList<Integer>(dest);
		while(true) {
			System.out.println(dest);
			boolean isprime=false;
			System.out.println("请输入你要判定的数字"+list);
			int num2=sc.nextInt();
			for(int i=0;i<list2.size();i++) {
				if(num2==list2.get(i)) {
					isprime=true;
				}
			}
			if(isprime) {
				System.out.println("是素数");
			}else {
				System.out.println("不是素数");
				
			}
			
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值