Извлечение простых чисел - PullRequest
0 голосов
/ 08 февраля 2020

Мне нужно создать метод, который будет отмечать простые числа и возвращать количество простых чисел.

Я зашел так далеко:

  private static int[] extractPrimesNumbers(int[] array, int countOfPrimeNumbers) {
        int[] primeNumber = new int[countOfPrimeNumbers];
        int position = 0;
        for (int j = 2; j < array.length; j++) {
            for(int key : array) {
                if(j == 2) {
                    array[position] = j;
                }
                boolean isDividedByJ = j % j == 0;
                boolean isDividedbyTwo = j % 2 != 0;
                if(isDividedByJ && isDividedbyTwo) {
                    array[position] = j;
                    position++;
                    j++;
                }
            }

Я не знаю, как не отмечать ни одного простого числа. Я думал, что хороший способ - пометить не простое число 0, а затем вычислить величину значения из позиции / индекса, которые выше 0. Стоит упомянуть, что все это должно быть в одном методе с использованием массива. Невозможно использовать стандартное решение для Prime с использованием внешних логических методов.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020

Вот мой подход к решению.

1) Сначала создайте очень простой метод, чтобы проверить, является ли число простым или нет. См. Ниже:

public static boolean checkPrime(int number) {
    if (number <= 1) {
        return false;
    }
    System.out.println(number);

    for (int i=2; i <= Math.sqrt(number); i++) {
        if(number % i == 0) {
            System.out.println(i);
            return false;
        } 
    }
    return true;

}

2) Создайте другой метод, который будет l oop через ваш массив, и вызовите вышеуказанный метод:

public static int numOfPrimesInArray(int[] arr){
    int counter = 0;
    for (int num: arr){
        if (checkPrime(num)) counter++;
    }
    return counter;
}

3) Затем просто вызовите его из основного Метод:

public static void main(String[] args){
    int[] nums = {1,2,3,5,6,7,8,9,10};
    int primes = numOfPrimesInArray(nums);
    System.out.println(primes);
}

Если я не допустил ошибок при написании этого плеча, укажите количество простых чисел в вашем массиве.

0 голосов
/ 09 февраля 2020

просто вернуть массив чисел, которые являются простыми, не нужно отмечать. и diff в продолжение нового массива и старого дает также продолжение не простого.

...