Zadanie przy użyciu sita Erastotenesa

0

Hej! zadanie wpełni skonczone, ale wciąż coś nie działa ;) ( jest to sito Erastotenesa

import java.util.Arrays;

public class SieveOfEratosthenes {

    public static void main(String[] args) {

    }

    private int[] sieve(int maximumNumber) {
        if (maximumNumber < 0) {
        }
        return new int[0];
    }


    private boolean[] createbooleans(int maximumNumber) {

        int n = 100;
        boolean pierwsze[] = new boolean[n];

        Arrays.fill(pierwsze ,true);
        pierwsze[0] = false;
        pierwsze[1] = false;
        for (int i = 2; i < n; i++) {
            if (pierwsze[i] == false) ;

            for (int j = i + i; j < n; j = j + i) {
                pierwsze[j] = false;
            }
        }
        return pierwsze;
    }


  

        private void markMultiplications(boolean[] numbers){


            int numberOfPrimes = 0;
            for (int i = 2; i < pierwsze.length; i++) {
                if (pierwsze[i] == true) {
                    numberOfPrimes++;

                }
            }
        }
                private int[] filterPrimes(boolean[] numbers) {

                int[] primes = new int[numberOfPrimes];
                for (int i = 2, x = 0; i < pierwsze.length; i++) {
                    if (pierwsze[i] == true) {
                        primes[x] = i;
                        x++;

                    }

                }
                System.out.println(Arrays.toString(primes));
                return primes;
            }
        }
1

Ale co tu jest skończone? Przecież to się nawet nie skomplikuje. To w ogóle twój kod? :)

0

Kiedy usunę dwie ostatnie metody to kod działa, jednak mają byc zawarte w kodzie.( Tak, mój ;))

  public static void main(String[] args) {

    }

    private int[] sieve(int maximumNumber) {
        if (maximumNumber < 0) {
        }
        return new int[0];
    }

    private int[] createbooleans(int maximumNumber) {

        int n = 100;
        boolean pierwsze[] = new boolean[n];
        Arrays.fill(pierwsze ,true);
        pierwsze[0] = false;
        pierwsze[1] = false;
        for (int i = 2; i < n; i++) {
            if (pierwsze[i] == false) ;
            for (int j = i + i; j < n; j = j + i) {
                pierwsze[j] = false;
            }
        }
      **  private void markMultiplications ( boolean[] numbers){**
            int numberOfPrimes = 0;
            for (int i = 2; i < pierwsze.length; i++) {
                if (pierwsze[i] == true) {
                    numberOfPrimes++;
                }
            }
        **    private int[] filterPrimes ( boolean[] numbers)
            int[] primes;**
            {
                primes = new int[numberOfPrimes];
                for (int i = 2, x = 0; i < pierwsze.length; i++) {
                    if (pierwsze[i] == true) {
                        primes[x] = i;
                        x++;
                    }
                }
            }
            System.out.println(Arrays.toString(primes));
            return primes;
        }
    }
}
4

Nie żartuj. Nic tu nie działa. Co niby robi takie

if (pierwsze[i] == false) ;

?

Zresztą raz masz w kodzie tablicę pierwsze a raz primes, ewidentnie próbujesz sklejać i przerabiać jakiegoś gotowca. Moje zalecenie: weź gotowca skoro musisz, ale takie rzeczy jak zmianę nazw zmiennych to rób w jakimś IntelliJ, bo on ogarnie zmianę wszędzie.

0

Jak się Chcesz czegoś auczyć, to Przepisz gotowca, ale pseudokod z Wikipedii :)
https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes#Pseudocode

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