Biggest Prime Number Проблем!

Здравейте, ще бъда ужасно благодарен, ако някой ми посочи къде греша, защото опитах няколко различни подхода, гледах предложенията на други участници в подобни дискусии относно задачата, но нищо не помогна! :frowning:

Eто и моя код: import java.util.Arrays;import java.util.Scanner;public class BiggestPrime - Pastebin.com

ето и още едно от решенията ми: import java.util.Scanner;public class BiggestPrimeNumber { public stati - Pastebin.com

с тях получавам 50/100 и грешка Invalid Return.

Благодаря предварително на всеки отговорил!

import java.util.Scanner;public class BiggestPrimeNumber { public stati - Pastebin.com - с този код получавам 20/100 и отново същия error message.
(Щях да го постна горе, но “new users can post only 2 links in a topic”)

Условието?


Това е, чак сега усетих, че не съм го добавил в описанието…

1 Like

Здравейте,
и аз я мислих много тази и накрая стигнах до решение, при което въртя отзад напред числата, за да намеря първото, което е и най-голямото и да спра. При мен проблема идваше от твърде много циклене, когато търся всички и накрая търся най-голямото.

Ето го кода ми, дано да е от полза :slight_smile:

import java.util.Scanner;

public class biggestPrimeNumber {

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    int n = Integer.parseInt(scanner.nextLine());

    int maxNum = 0;

    for (int currentNumber = n; currentNumber >= 1; currentNumber--) {

        boolean isPrime = true;

        for (int divisor = 2; divisor <= Math.sqrt(currentNumber); divisor++) {

            if (currentNumber % divisor == 0) {

                isPrime = false;

                break;

            }

        }

        if (isPrime == true) {

            maxNum = currentNumber;

            System.out.println(maxNum);

            break;

        }

    }

}

}

1 Like

Здравей,

Сега ще погледна за какво иде реч. Благодаря за помощта! :slight_smile:

Грешката в този код е в условието на цикъла for в първия цикъл, по-специално в границата на цикъла. Границата на цикъла трябва да бъде Math.sqrt(n) + 1, а не Math.sqrt(n).

Променя се и условието във втория цикъл for, за да проверяваме дали isPrime[i] вместо !isPrime[i]. Това е така, защото итерираме от края на масива isPrime и търсим най-голямото просто число, така че няма нужда да използваме оператора continue.

isPrime - Pastebin.com