当前位置: 首页 > 知识库问答 >
问题:

用for循环检查素数[重复]

吴单鹗
2023-03-14

需要运行一个代码,该代码遍历从2到-number的数字,并在isPrime方法中给出一个关于输入数字的布尔值。不管我输入了什么,我总是得到“真”,7,28等等。

// Import statement:
import java.util.ArrayList;
class PrimeDirective {
    // Add your methods here:
    public boolean isPrime(int number) {
        int prime = 0;
        int checkPrime = number % 1;
        
        if (number == 2) {
            return true;
        }
        if (number < 2) {
            return false;
        }
        
        for (int i = 2; i < number; i++) {
            if (number % i == 1) {
                return true;
            } else {
                return false;
            }
        }
    }
    
    public static void main(String[] args) {
        
        PrimeDirective pd = new PrimeDirective();
        int[] numbers = { 6, 29, 28, 33, 11, 100, 101, 43, 89 };
        System.out.println(pd.isPrime(7));
    }
}

共有3个答案

苏嘉志
2023-03-14

如果只检查数字的一半,就可以找到结果并优化代码,因为理想情况下,我们只需要检查数字的平方根。

public boolean isPrime(int number){
 for(int i=2;i<number/2;i++)
     if(number%i==0)
          return false;
  return true;
}
麹鸿煊
2023-03-14

检查一个数字是否为素数更容易。您的代码如下所示:

for(int i = 2; i < number; i++)    
  if (number % i == 0 && number != i)
      return false;

return true;
孔鸿宝
2023-03-14

首先,先除以2来消除2。这允许您检查奇数是否可除。

public boolean isPrime(int v) {
   if (v == 1 || v%2 == 0) {
       return false;
   }
   // then you just need to check for divisibility up to the
   // square root of the number.
   int max = (int)Math.sqrt(v) + 1;
   for (int i = 3; i <= max; i+=2) {
      if (v % i == 0) {
           return false;
      }
   }
   return true;
}


 类似资料:
  • 问题内容: 我有这种方法,可以在登录前检查用户名和密码。现在,我的for循环仅检查第一个项目,它发现第一个项目不满足第一个条件,因此与其去检查第二个项目,它只是中断并返回null。 为什么会这样? 这是我的方法: 问题答案: 因此,请尝试此代码。

  • 问题内容: 在Java中的for循环中防止空值的最佳方法是什么? 这看起来很丑: 要么 可能没有其他办法。他们是否应该将它放在构造本身中,如果它为null,则不要运行循环? 问题答案: 您最好验证从哪里获得该列表。 空列表就是您所需要的,因为空列表不会失败。 如果您从其他地方获得此列表,并且不知道是否可以,则可以创建一个实用程序方法并像这样使用它: 当然是:

  • 问题内容: 我试图设置获取所有元素的ID 。我写了以下代码: 但是我在控制台中得到以下输出: 这不是我所期望的。为什么第二个控制台输出却第一个控制台输出是? 问题答案: 在回答原始问题时,您使用不正确。在您的代码中,是索引。因此,要从伪数组中获取值,就必须这样做,而要获取id,就必须这样做。但是,首先不应该这样做。 摘要 永远不要使用来迭代nodeList或HTMLCollection。避免它的原

  • 我试图创建一个可以识别父子循环的函数<想象 对象A是对象B的父对象 对象B是对象C的父对象 创建一个可以防止父子循环的函数。该函数应该给出至少两个参数(ChilName、家长名),如果关系创建了一个循环,则会出错。在上面的例子中,如果我们通过(A、C)应该打印或传递字符串: “A是C的父级” 我知道如何创建这个函数(你可以用任何语言提供答案): 我的主要问题是如何在异常中提供正确的消息。(“A是C

  • 在上面的代码中,我根据天气与否计算每个指数,每个指数都是=到零。然而,它总是在foreach循环中运行false,在for循环中运行true。有人能解释一下幕后发生了什么让这一切发生吗? 我不是按顺序运行它们,它们都是为了演示目的。

  • 问题内容: 我的问题是关于在哪些Java检查的条件for循环时,有一个print语句的顺序做 在 该循环的“条件”。这似乎是不切实际的事情(我从未见过以任何实际方式使用它),尽管我对打印的内容缺乏理解,使我认为我可能不完全了解for循环的功能。在最近的一次考试中出现了以下问题: 输入n = 5时,以下方法将打印什么? 正确的答案是:0 1 2 3 4 5 在我看来,该循环应该打印-1,然后将i递增