java - 如何使素性测试接受大数

标签 java primality-test

我有一个素性测试代码,可接受最多 10 位数字的整数,但我想对其进行扩展,以便该代码接受超过 200 位数字。我应该在代码中切换什么?

import java.util.*; 
import java.math.*; 

class CheckPrimeTest { 

    static boolean checkPrime(long n) 
    { 
        // Corner case 
        if (n <= 1) return false; 

        // Check from 2 to n-1 
        for (int i = 2; i < n; i++) 
            if (n % i == 0) 
                return false; 

        return true; 
    } 

    // Driver Program  
    public static void main(String args[]) 

                         throws java.lang.Exception 
    { 
 Scanner input = new Scanner(System.in);
  System.out.print("Enter an integer: ");
        long n = input.nextInt();  

       System.out.println(checkPrime(n)); 

    } 
} 

最佳答案

如果您有如此大的数字,则无法使用 intlong ,则必须使用 BigInteger它已经为您定义了一个 isProbablePrime 方法:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    BigInteger integer = new BigInteger(scanner.nextLine());
    System.out.println(integer.isProbablePrime(1));
}

关于java - 如何使素性测试接受大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510153/

相关文章:

java.lang.NoSuchMethodError : org. openqa.selenium.support.ui.FluentWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;

java线程和主线程

lisp - 定义 ISPRIME 函数时遇到问题

c - 在 C 中实现 Miller-Rabin

algorithm - 为什么我们要检查一个数的平方根以确定该数是否为质数?

java - Spring批量Excel扩展

java - 使用特定语言学习算法的方法

c - 素数逻辑,循环中的 n/2 条件

prolog - 在Prolog中计算数字是否为质数

java - 如何获取 GitHub 中某个版本的所有提交?