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 № 1Oto 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ócip
, tam
nie jest liczbą pierwsząq
takie, żethis < q < p
.