2011-07-11 21 views
6

API Java có cung cấp một hàm tính số nguyên tố lớn nhất tiếp theo cho đầu vào x không?Whats được xây dựng trong chức năng Tìm số nguyên tố lớn nhất tiếp theo trong java?

+4

Không cho đến khi bạn viết một. –

+0

Tôi nghĩ rằng đối với một người nào đó tại Sun/Oracle để phát triển điều này; kiểm tra nó; QA nó; mã xem xét nó; ghi lại nó; và dịch tài liệu; cho một cái gì đó sẽ được RARELY sử dụng; sẽ là một sự lãng phí tiền bạc. – vcsjones

+1

Iphone của bạn phải làm gì với câu hỏi này? – dave

Trả lời

5

Đó sẽ là một phương pháp khá bí truyền, và không thực sự là một ứng cử viên tuyệt vời để đưa vào một thư viện lớp học chung. Bạn sẽ cần phải tự mình viết, bằng cách sử dụng test hoặc sieve.

+0

rây được sử dụng để tìm kiếm tất cả số nguyên tố _less_ so với một số cụ thể - trong trường hợp này sử dụng phép thử :) –

+0

Chắc chắn, nhưng bạn luôn có thể tạo số nguyên tố lên N * trước * và sau đó "tiếp theo" (dưới N) trở nên tầm thường. :) – dlev

+1

tại sao nó sẽ là bí truyền? tại sao nó không phải là một ứng viên "tuyệt vời" cho một thư viện? và tại sao có một phương pháp trong JDK thực hiện chính xác điều này? BigInteger.nextProbablePrime(). tôi nghĩ rằng bạn đã không đưa ra câu trả lời đúng và tôi shure bạn đã không đưa ra giải pháp. –

4

Có, thực sự không có chức năng như vậy!

3

BigInteger.nextProbablePrime() có thể phù hợp nếu bạn đang làm việc với số nguyên lớn. Nếu không, bạn có thể viết của riêng bạn một cách dễ dàng đủ. Dưới đây là một trong tôi đã chuẩn bị trước đó:

static long nextPrime(long previous) { 
    if (previous < 2L) { return 2L; } 
    if (previous == 2L) { return 3L; } 
    long next = 0L; 
    int increment = 0; 
    switch ((int)(previous % 6L)) { 
    case 0: next = previous + 1L; increment = 4; break; 
    case 1: next = previous + 4L; increment = 2; break; 
    case 2: next = previous + 3L; increment = 2; break; 
    case 3: next = previous + 2L; increment = 2; break; 
    case 4: next = previous + 1L; increment = 2; break; 
    case 5: next = previous + 2L; increment = 4; break; 
    } 
    while (!isPrime(next)) { 
    next += increment; 
    increment = 6 - increment; // 2, 4 alternating 
    } 
    return next; 
} 

này sử dụng một 2, 4 bánh xe để bỏ qua bội số của 2 và 3. Bạn sẽ cần một phương pháp kiểm tra số nguyên tố:

boolean isPrime(long toTest) { ... } 

trả về true nếu nó thông số là số nguyên tố, false nếu không.

+1

không phải là giải pháp? tất cả mọi người trong bài viết này đều nói rằng KHÔNG có phương pháp nào để lấy số nguyên tố - nhưng có. BigInteger.nextProbablePrime() như rossum nói. mọi người đang làm cho niềm vui của câu hỏi, nói rằng bạn nên làm bài tập ở nhà của riêng bạn, nhưng họ thậm chí không biết câu trả lời. –

0
public class nextprime { 

    public static void main(String args[]) { 
    int count = 0; 
    int n = 17; 
    for (int i = 2; i <= n/2; i++) { 
     if (n % i == 0) { 
      count++; 

     } 
    } 
    if (count == 0) { 
     System.out.println("prime"); 
     for (int p = n + 1; p >0; p++) { 
      int y=0; 
      for (int i = 2; i <= p/2; i++) { 
       if (p % i == 0) { 
        y++; 

       } 
      } 
      if(y==0) 
      { 
       System.out.println("Next prime "+p); 
       break; 
      } 
     } 
    } else { 
     System.out.print("not prime"); 
    } 
    } 

}

+0

Theo như tôi có thể đọc điều này, điều này đầu tiên sẽ xác định rằng 17 thực sự là nguyên tố, hơn là không xác định rằng 18 là không và sau đó xác định rằng 19 là. – SWeko

1

Java lớp java.math.BigInteger chứa phương thức nextProbablePrime() để kiểm tra tính nguyên thủy của một số.

import java.math.BigInteger; 

public class NextPrime { 

      public static void main(String[] args) { 
         int number = 83; 
         Long nextPrime = nextPrime(number); 
         System.out.println(nextPrime + " next prime to " + number); 

      } 

      /** 
      * method to find next prime 
      * @param number 
      * @return boolean 
      */ 
      private static Long nextPrime(int number) { 
         BigInteger bValue = BigInteger.valueOf(number); 

         /** 
         * nextProbablePrime method used to generate next prime. 
         * */ 
         bValue = bValue.nextProbablePrime(); 

         return Long.parseLong(bValue.toString()); 
      } 
} 

Output: 89 đắc địa bên cạnh 83

Để biết thêm thông tin, xem blog của tôi:
http://javaexplorer03.blogspot.in/2016/05/generate-next-prime-of-number-in-java.html

Các vấn đề liên quan