java - 在java中查找素数时得到奇怪的输出

标签 java

我有两种方法可以在java方法中找出素数 - 2工作正常,但从方法一中得到错误的输出,可以帮助我在逻辑上出错的地方。提前致谢

我的整个代码

package prepare;

import java.util.Scanner;

    public class Squar {
        //Method - 1 to find prime number
        boolean isPrime(int num){
            int exp = (int)Math.sqrt(num);
            for(int i=2;i<exp;i++){
                if(exp%2==0){
                    return false;
                }
            }return true;
        }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        Squar s = new Squar();
        System.out.println("From M1 "+s.isPrime(num));
        scan.close();
        System.out.println("From M2 "+s.isPrimeNumber(num));
    }
    //Method - 2 to find prime number
    public  boolean isPrimeNumber(int number) {
        if(number == 1){
            return false;
        }
        if (number == 2 || number == 3) {
            return true;
        }
        if (number % 2 == 0) {
            return false;
        }
        int sqrt = (int) Math.sqrt(number) + 1;
        for (int i = 3; i < sqrt; i += 2) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }

}

对于输入:63 实际输出在素数中将是错误的,但得到 与方法一不同的输出 输出

63
From M1 true
From M2 false

最佳答案

isPrime() 方法中,您不应该检查 num % i == 0 而不是 exp % 2 == 0

关于java - 在java中查找素数时得到奇怪的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52255757/

相关文章:

java - Android 问题中的自定义相机应用程序 - 旋转 270、拉伸(stretch)捕获 View 且未获得所有功能

java - Android 应用程序和 Web 浏览器之间的套接字通信

java - JAAS Realm 加载内部配置文件

java - While 循环和困难

java - Azure - HDInsight Hbase 数据插入失败

Java 热点错误

java - 批处理文件未在 Windows 8.1 中执行所需的命令

java - 无法访问内部类中的LinkedHashMap

JavaFX:无效属性错误

java - 为什么 Selenium 不能通过 xpath 找到元素?