Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Patikrinkite kiek yra pirminių skaičių, mažesnių už arba lygių n, kur n − vartotojo įvestas sveikasis skaičius
- (nebūtinai pirminis). Pirminiu skaičiumi laikomas skaičius, kuris dalinasi tik iš vieneto ir savęs.
- Tuo tikslu sudarykite funkciją bool arPirminis(int), kuri grąžina true, jei parametru perduotas skaičius yra
- pirminis arba false, jei perduotas skaičius yra sudėtinis. Naudodami šią funkciją patikrinkite kiekvieną
- skaičių nuo 1 iki n imtinai ir suskaičiuokite kiek kartų funkcija grąžins reikšmę true.
- Tikrinimo intervalą padalinkite tarp naudojamų gijų: viena gija tikrina vienus skaičius, kita -- kitus.
- Kai visos gijos baigia darbą, suskaičiuokite bendrą pirminių skaičių kiekį.
- Siekdami geresnio darbų tarp gijų paskirstymo, galite atsižvelgti į tai, kad didesnio skaičiaus tikrinimas
- gali reikalauti daugiau skaičiavimo resursų.
- */
- package com.company;
- import java.util.Scanner;
- class MyThread extends Thread {
- private final String threadName;
- private final PrimeNumber pn;
- private long begin, end;
- int count = 0;
- MyThread(String name, int begin, int end) {
- threadName = name;
- pn = new PrimeNumber();
- this.begin = begin;
- this.end = end;
- }
- public void run(){
- long start = System.currentTimeMillis();
- System.out.println(threadName + ": I will perform preparations from " + begin + " to " + end);
- for(int i = 1; i <= pn.n; i++){
- if(pn.arPirminis(i)==true){
- count++;
- }
- }
- long end = System.currentTimeMillis();
- long duration = end - start;
- System.out.println(threadName + " finished in " + duration/1000.0 + " s");
- System.out.println("Pirminių rasta: " + count);
- }
- }
- class PrimeNumber {
- public int n;
- PrimeNumber() {
- this.n = n;
- }
- public boolean arPirminis(int n) {
- n = this.n;
- boolean prime = false;
- for(int i=2; i<=n; i++){
- int temp = n%i;
- if(temp == 0){
- prime = false;
- break;
- }
- else{
- System.out.println("skaičius: " + i);
- prime = true;
- }
- }
- return prime;
- }
- }
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("Įveskite skaičių.");
- int n = sc.nextInt();
- PrimeNumber pn = new PrimeNumber();
- pn.n = n;
- sc.close();
- MyThread thread1 = new MyThread("Tread-1", 1, n/2-1);
- MyThread thread2 = new MyThread("Tread-2", n/2, n);
- thread1.start();
- thread2.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement