Zadanie z wielowątkowości

0

Napisz program, w którym uruchamiane są trzy wątki. Pierwszy z nich wyświetla kolejne liczby pierwsze z przedziału 1,000,000 - 2,000,000, drugi z przedziału 2,000,000 - 3,000,000, a trzeci z przedziału 3,000,000 - 4,000,000.

Każdy z wątków powinien przerwać swoje działanie po znalezieniu dziesięciu liczb pierwszych z podanego przedziału.
Po znalezieniu kolejnej liczby pierwszej każdy z wątków wyświetla ją na ekranie. Przy każdej wyświetlanej liczbie powinna się pojawić informacja mówiąca o tym, który wątek ją wyświetlił.

Metoda main powinna zostać napisana tak, że po zakończeniu pracy wszystkich trzech wątków wyświetlana jest informacja o autorze programu.

/**
 * @(#)W1.java
 *
 *
 * @author 
 * @version 1.00 2014/1/26
 */


public class W1 extends Thread {

    public static void main(String[] args) {
    	
    	int b;
    	int a;
    	int n = 200000;
        boolean[] numbersTable = new boolean[n+1];
    	for (a=0;a<10;a++){
    		
    		for(int i = 1000000; i*i <= n; i++){
    		
            if (numbersTable[i] == true)
		continue;
            for (int j = 2 * i ; j <= n; j += i)
		numbersTable[j] = true;
    		}
       }
        
        System.out.println("Liczby pierwsze z przedziału od 1000000 do " + n + ":");
        for (int i = 1000000; i <= n; i++)
            if (numbersTable[i] == false)
				System.out.println(i);

        
    	
    	
    }
    
    
}

Brakuje instrukcji która kazałaby wyświetlić 10 pierwszych znalezionych liczb i dodała do każdej z nich napis "wątek pierwszy"
Pomożecie? ;)

0

Napisz, z czym dokładnie masz problem. Na gotowca nie licz, przynajmniej nie za darmo.

0

w main uruchamiasz tylko watki. Cos w tym stylu :

public static void main(String[] args) {
    Thread threadA = new Thread(new MyRunnable());
    Thread threadB = new Thread(new MyRunnable());
    Thread threadC = new Thread(new MyRunnable());
  
    threadA.start();
    threadB.start();
    threadC.start();
  }

Do tego tworzysz klasy/watki badz jedna klase z konstruktorem na wartosci i obiekty

0

przeciez to cos nawet nie dziala...

for(int i = 1000000; i*i <= n; i++)

to sie nie wykona to po co cos takiego. tablica[i] ... gdy ma tylko N elementow. dobrze ze ta tablica tez sie nie wykona

wiec nie masz nic.
http://pl.wikipedia.org/wiki/Sito_Eratostenesa
zrob wedlug tego szukanie liczb pierwszych. Jak bedziesz miec liczby pierwsze do 3 000 000 to wtedy przyjdz tu jezeli bedziesz miec problemy z watkami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1