importjava.util.ArrayList;importjava.util.Scanner;classMyThreadextendsThread{//公有资源publicintN;staticint sum =0;staticint i =1;publicMyThread(intN){this.N=N;}publicintgetSum(){return sum;}publicvoidrun(){//判断是否是因数并累加while(i!=N){//不能使用for循环,在run方法里面不支持if(N%i==0)
sum+=i;
i++;}}}publicclassKongbai{publicstaticvoidmain(String[] args){Scanner in =newScanner(System.in);System.out.println("所需测试的数N:");intN= in.nextInt();System.out.println("所需线程的数P:");intP= in.nextInt();//泛型容器存线程资源ArrayList<MyThread> list =newArrayList<MyThread>();//创建P个线程for(int i =0; i <P; i++){MyThread a =newMyThread(N);
list.add(a);}//开始多线程for(int i =0; i <P; i++){
list.get(i).start();}//输出控制if( list.get(0).getSum()==N){System.out.println(N+"是完全数");}elseSystem.out.println(N+"不是完全数");
in.close();}}