Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用for循环检查素数_Java - Fatal编程技术网

Java 用for循环检查素数

Java 用for循环检查素数,java,Java,需要运行一个代码,该代码遍历从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;

需要运行一个代码,该代码遍历从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));
    }
}
//导入语句:
导入java.util.ArrayList;
类素数指令{
//在此处添加您的方法:
公共布尔iPrime(整数){
整数素数=0;
int checkPrime=数字%1;
如果(数字==2){
返回true;
}
如果(数字<2){
返回false;
}
for(int i=2;i
更容易检查数字是否为素数。您的代码如下所示:

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

return true;
for(int i=2;i
如果只检查数字的一半,您可以找到结果并优化代码,因为理想情况下,我们只需要检查数字的平方根

public boolean isPrime(int number){
 for(int i=2;i<number/2;i++)
     if(number%i==0)
          return false;
  return true;
}
public boolean isPrime(整数){

对于(inti=2;i首先,只需通过先除以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;
}


public boolean isPrime(int v){
如果(v==1 | | v%2==0){
返回false;
}
//然后你只需要检查整除到
//数字的平方根。
int max=(int)Math.sqrt(v)+1;

对于(inti=3;i侧注:阅读关于正确的Java代码缩进的内容{在一行末尾用大括号括起来,并且始终使用相同的缩进。这些事情很重要。它们使您的代码易于阅读或难以阅读。另外:请在发布问题之前进行适当的研究。您不可能是第一个就isPrime()问问题的人。如果
number=1
,您的方法将返回
true
,这是错误的,因为
1
不是素数。此外,不需要检查
number/2
。检查数字的sqrt(<代码>非常不必要的检查。这里的数学不太清楚,为什么平方根?考虑一些像19的数字。如果19可被2整除以给出<代码> q>代码>,那么19也可以被<代码> q>代码>分割为2。如果按3给出<代码> s>代码>,也可以通过<代码> s>代码>给出3。所以将来的划分已经C了。没有。一个人可以停止寻找的点是当
k*k=19
或平方根上方的下一个数字。对于19,这将是5。另一种看待它的方式是,如果任何
number>sqrt(n)
除以
n
,那么肯定有一个
number
也可以对
n
进行除法。因此,只需对
sqrt(n)
进行除法即可。