Advertisement
Grafundzijus

blogas variantas

Nov 22nd, 2021
1,005
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1. /*
  2. Patikrinkite kiek yra pirminių skaičių, mažesnių už arba lygių n, kur n − vartotojo įvestas sveikasis skaičius
  3. (nebūtinai pirminis). Pirminiu skaičiumi laikomas skaičius, kuris dalinasi tik iš vieneto ir savęs.
  4.  
  5.         Tuo tikslu sudarykite funkciją bool arPirminis(int), kuri grąžina true, jei parametru perduotas skaičius yra
  6.         pirminis arba false, jei perduotas skaičius yra sudėtinis. Naudodami šią funkciją patikrinkite kiekvieną
  7.         skaičių nuo 1 iki n imtinai ir suskaičiuokite kiek kartų funkcija grąžins reikšmę true.
  8.  
  9.         Tikrinimo intervalą padalinkite tarp naudojamų gijų: viena gija tikrina vienus skaičius, kita -- kitus.
  10.         Kai visos gijos baigia darbą, suskaičiuokite bendrą pirminių skaičių kiekį.
  11.  
  12.         Siekdami geresnio darbų tarp gijų paskirstymo, galite atsižvelgti į tai, kad didesnio skaičiaus tikrinimas
  13.         gali reikalauti daugiau skaičiavimo resursų.
  14. */
  15.  
  16.  
  17. package com.company;
  18.  
  19. import java.util.Scanner;
  20.  
  21. class MyThread extends Thread {
  22.     private final String threadName;
  23.     private final PrimeNumber pn;
  24.     private long begin, end;
  25.     int count = 0;
  26.  
  27.  
  28.  
  29.     MyThread(String name, int begin, int end) {
  30.         threadName = name;
  31.         pn = new PrimeNumber();
  32.         this.begin = begin;
  33.         this.end = end;
  34.  
  35.  
  36.     }
  37.     public void run(){
  38.         long start = System.currentTimeMillis();
  39.         System.out.println(threadName + ": I will perform preparations from " + begin + " to " + end);
  40.  
  41.         for(int i = 1; i <= pn.n; i++){
  42.             if(pn.arPirminis(i)==true){
  43.                 count++;
  44.             }
  45.         }
  46.  
  47.         long end = System.currentTimeMillis();
  48.         long duration = end - start;
  49.         System.out.println(threadName + " finished in " + duration/1000.0 + " s");
  50.         System.out.println("Pirminių rasta: " + count);
  51.  
  52.     }
  53.  
  54. }
  55.  
  56. class PrimeNumber {
  57.     public int n;
  58.  
  59.     PrimeNumber() {
  60.         this.n = n;
  61.     }
  62.  
  63.     public boolean arPirminis(int n) {
  64.         n = this.n;
  65.         boolean prime = false;
  66.  
  67.         for(int i=2; i<=n; i++){
  68.  
  69.             int temp = n%i;
  70.             if(temp == 0){
  71.                 prime = false;
  72.                 break;
  73.             }
  74.             else{
  75.                 System.out.println("skaičius: " + i);
  76.                 prime = true;
  77.             }
  78.         }
  79.         return prime;
  80.     }
  81.  
  82.  
  83. }
  84.  
  85. public class Main {
  86.  
  87.     public static void main(String[] args) {
  88.  
  89.  
  90.         Scanner sc = new Scanner(System.in);
  91.         System.out.println("Įveskite skaičių.");
  92.         int n = sc.nextInt();
  93.         PrimeNumber pn = new PrimeNumber();
  94.         pn.n = n;
  95.         sc.close();
  96.  
  97.  
  98.  
  99.  
  100.         MyThread thread1 = new MyThread("Tread-1", 1, n/2-1);
  101.         MyThread thread2 = new MyThread("Tread-2", n/2, n);
  102.  
  103.  
  104.         thread1.start();
  105.  
  106.         thread2.start();
  107.  
  108.  
  109.     }
  110.  
  111. }
  112.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement