java - 在java中测试素数

标签 java

我的程序的目标是编写一个程序,提示用户输入一个整数。该程序将读取整数并确定它是否为素数。如果它不是素数,它会告诉用户所有的除数。

这是我得到的结果,但是当我用 169 或 289 这样的数字测试它时,程序说它们是质数。我知道问题出在这一行:

int[] div = new int[] { 2,3,4,5,6,7,8,9};

我试着做这样的事情:

for (int s = nr; s != 0 ; s--) { 
      if (nr%s == 0) {
      int[] div = new int[]{s}; }

但是没有用。一点帮助或正确的方向会有很大帮助。谢谢!

public static void main(String[] args){
    System.out.println("enter a number:");
    Scanner scanner = new Scanner (System.in);
    int nr = scanner.nextInt();
    int[] div = new int[] { 2,3,4,5,6,7,8,9}; 
    boolean prime = nr >= 2;
    int i = nr;
    for(int j = 0; j< div.length && prime && i> div[j]; j++)
        if(i % div[j] == 0)
            prime = false;

    if(prime){
        System.out.println(i + " is a prime");
    }else{
        System.out.print(i + " is divisible");
        for(int k = 2; k < i; k++)
            if(i % k == 0){
                System.out.print( k);
                System.out.print(",");}

                }

            } }

最佳答案

您只尝试将 9 以内的数字作为除数。因此,任何具有全部 10 或更高因数的事物,例如 169 是 13 乘以 13,您将找不到 13。

与其将除数存储在数组中,不如考虑使用整数并向上计数。也就是说,不要使用 div[j] 只是使用 j 作为除数,并且不要让它停在 10。让它停在可能的最高除数(这是的平方根您要查找质数的数字)。

关于java - 在java中测试素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846779/

相关文章:

java - 扩展和覆盖 Mule 配置文件中的标签(消息处理器)

java - 多线程无法正常工作

java - 将 java.util.Collections 转换为整数数组

java - 为什么用户没有被添加到解析中?请查看详情

java - 我可以在 Java 中的 ArrayList<T> 实例上使用类字段吗?

java - 无法创建文件 [META-INF/war-tracker] Tomcat 9 linux

java - OnLongClickListener 不适用于 onTouchListener

java - 在 JAVA 中使用 RadialGradientPaint 创建光

Java、Hibernate、MySQL - 存储 UTC 日期时间

java - 方法引用 Bound Receiver 和 Unbound Receiver 的区别