java - java中的素数测试

标签 java

public static boolean isPrime(int number)
{
  boolean result = true;

  for (int i=2; i < number/2; i++)
  {
     if (number%i == 0)
     {
        result = false;
     }
  }

  return result;
}

这段代码可以工作,但是我如何修改它,以便当 int number = 0 时,它返回 false?目前,当 number = 0 时,它返回 true。

最佳答案

是的,它确实像看起来一样简单:)

public static boolean isPrime(int number) {
    boolean result = true;
    if (number == 0){
        return false;
    }

    for (int i = 2; i < number / 2; i++) {
        if (number % i == 0) {
            result = false;
        }
    }

    return result;
}

执行此方法的有效方法是:

public static boolean isPrime(int number) {
    //Everything less or equal 1 is not prime number
    if (number <= 1) {
        return false;
    }

    //2 is very special case, so I check it separately
    if (number == 2) {
        return true;
    }

    //This will help me rid off all even numbers
    if (number % 2 == 0) {
        return false;
    }


    //It is important to count the sqrt before using it in for-loop condition.
    //If you use it in for-loop condition, it will be counted every single iteration.
    int square = (int) Math.sqrt(number);

    //I already checked %2, so now I need to check only odd numbers
    for (int i = 3; i <= square; i += 2) {
        if (number % i == 0) {
            //If I find one number, I do not have to continue
            return false;
        }
    }
    return true;
}

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

相关文章:

java - JSON:将对象转换为数组

java - 我在网上找到的一个有趣的谷歌面试算法,需要线性时间

java - eclipselink @orderby 可比

java - 使用 Java 执行 WIndows 命令行命令

java - GUI 不出现 Java

java - 使用 Toothpick DI 框架与 Java(仅限)项目一起使用

Java TargetDataLine 没有接收到任何音频?

c# - WCF 与 Java 兼容吗?

java - 在 TestNG 中运行 Java 单元测试时消除对 testng.xml 的需求

java - Maven 模块 - 如何在不相关的项目中将其用作外部库