Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.46 KB | None | 0 0
  1. //01151424 David Karasz
  2. public class Bsp06 {
  3.  
  4.  
  5.     public static void main(String[] args) {
  6.         System.out.println("Alle Primzahlen in [m, n]");
  7.         System.out.print("m: ");
  8.         int m = SavitchIn.readInt();
  9.         System.out.println();
  10.         System.out.print("n: ");
  11.         int n = SavitchIn.readInt();
  12.         System.out.println();
  13.         System.out.println(String.format("Alle Primzahlen in [%d, %d]:", m, n));
  14.        
  15.  
  16.  
  17.         boolean[] primes = findPrimes(m, n);
  18.         int primesCount = printPrimes(primes, m);
  19.         System.out.println("Insgesamt: " + primesCount + " Primzahlen.");
  20.  
  21.         boolean [] Eratos = sieveOfEratosthenes (n,m);
  22.         int primeEratos = printPrimes(Eratos, m);
  23.         System.out.println("Insgesamt: " +primeEratos + "Primzahlen");
  24.     }
  25.  
  26.  
  27.  
  28.     public static boolean isPrime(int n) {
  29.         int prim = 2;
  30.  
  31.         while((prim <= n) && (n%prim != 0) && (n > 1))
  32.             prim++;
  33.  
  34.         return prim == n;
  35.     }
  36.  
  37.  
  38.     public static boolean[] findPrimes(int m, int n) {
  39.         if (n < m) return null;
  40.         int size = n - m + 1;
  41.         boolean[] primes = new boolean[size];
  42.         for (int i = m; i <= n; i++) {
  43.             primes[i - m] = isPrime(i);
  44.         }
  45.         return primes;
  46.     }
  47.  
  48.     public static int printPrimes(boolean[] foundPrimes, int m) {
  49.         int primes = 0;
  50.         for (int i = 0; i < foundPrimes.length; i++) {
  51.             if (foundPrimes[i]) {
  52.                 System.out.print(m + i + " ");
  53.                 primes++;
  54.             }
  55.         }
  56.         System.out.println();
  57.         return primes;
  58.     }
  59.  
  60.     public static boolean [] sieveOfEratosthenes(int n, int m){
  61.         boolean prime[] = new boolean[n+1];
  62.         if (n == 0)
  63.             prime[0] = false;
  64.          if (n == 1)
  65.              prime[1] = false;
  66.          
  67.         for(int i =m; m <= n; i++, m++)
  68.              prime[i] = isPrime(m);
  69.          
  70.         for(int p = 2; p*p <=n; p++)
  71.         {
  72.             // If prime[p] is not changed, then it is a prime
  73.             if(prime[p] == true)
  74.             {
  75.                 // Update all multiples of p
  76.                 for(int i = m = p*2; i <= n; i += p)
  77.                     prime[i] = false;
  78.             }
  79.         }
  80.          
  81.         // Print all prime numbers
  82.         for(int i = 2; i <= n; i++)
  83.         {
  84.             if(prime[i] == true)
  85.                 System.out.print(i + " ");
  86.         }
  87.         return prime;
  88.     }
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement