/ / Używając języka Java, w jaki sposób mogę znaleźć liczbę pierwszą, która jest najbliższa podanej liczbie całkowitej? - java, metody

Używając języka Java, Jak znaleźć numer początkowy, który jest następny najmniejszy dla danej liczby całkowitej? - Java, metody

Jestem zdezorientowany przy projektowaniu kodu. Mam zwrócić najmniejszą liczbę pierwszą większą niż integer "num", na przykład smallestPrimeBiggerThan(20) powinien powrócić 23 Mam już kod do ustalenia, czyliczba jest liczbą pierwszą, ale nie jestem pewien, jak zrobić resztę kodu. Zajrzałem już do tej strony, ale pozostałe wyjaśnienia dotyczą C i C ++. Nie jestem pewien, jak tłumaczyć kod między C na Javę. Wolałbym również, aby był to prosty sposób na jego ukończenie, ponieważ jestem nowy w kodowaniu i niewiele wiem o bardziej złożonych częściach (tablicach i tym podobnych).

Oto przykład argumentów

Liczba całkowita n wynosi 80, więc najmniejsza liczba pierwsza obok liczby całkowitej wynosi 83, więc metoda zwróciłaby wartość 83

Oto podstawa dla kodu

public static void main(String[] args) {
System.out.println(smallestPrimeBiggerThan());

}

public static int smallestPrimeBiggerThan(int num) {

}

Odpowiedzi:

1 dla odpowiedzi № 1

Oto fragment, który przygotowałem (uwaga: logika dzięki uprzejmości @Paul Lemarchand i @Elliot Frisch) wraz z to algorytm główny:

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
System.out.print("Please enter a whole number to find the next highest prime of: ");
System.out.println(smallestPrimeBiggerThan(input.nextInt()));

}

static boolean isPrime(int n) {
if (n%2==0) return false;
for(int i=3;i*i<=n;i+=2) {
if(n%i==0)
return false;
}
return true;
}

public static int smallestPrimeBiggerThan(int num) {
while (!isPrime(num)) {
++num;
}
return num;
}

Wiem, że masz już swój główny algorytm, ale chciałem, aby mógł on uruchomić kopiowanie / wklejanie, więc włączyłem go z Internetu. Część, której szukasz, to while pętla. Za każdym razem, gdy się zapętla, sprawdza, czy num jest liczbą pierwszą, ale najpierw zwiększamy zmienną, więc nie wracamy tylko na podstawie liczby pierwszej. Jeśli to nie jest liczba pierwsza, zwiększaj ... płucz i powtarzaj, aż otrzymamy liczbę pierwszą, a następnie wróć.


1 dla odpowiedzi nr 2

Jeśli nie zależy ci na precyzji, możesz użyć nextProbablePrime metoda BigInteger klasa. na przykład:

BigInteger index=new BigInteger("20");
System.out.println(index.nextProbablePrime());

The nextProbablePrime znajduje prawdopodobną liczbę pierwszą. javadoc:

Zwraca pierwszą liczbę całkowitą większą niż ta BigInteger który
jest prawdopodobnie pierwsza. Prawdopodobieństwo, że liczba zwróci przez to
metoda złożona nie przekracza 2-100. Ta metoda będzie
nigdy nie pomijaj liczby pierwszej podczas wyszukiwania: jeśli ona powróci p, tam
nie jest liczbą pierwszą q takie, że this < q < p.