有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用For循环获取素数java

我必须使用for循环得到素数,我有所有的东西,它运行,但它总是返回“is prime”

样本输出:

1201 IS PRIME.
77 IS NOT PRIME.
1213 IS PRIME.
88 IS NOT PRIME.
1217 IS PRIME.
99 IS NOT PRIME.
121 IS NOT PRIME.
1431 IS NOT PRIME.
1223 IS PRIME.
141 IS NOT PRIME.
234 IS NOT PRIME.
97 IS PRIME.
436 IS NOT PRIME.
47 IS PRIME.
7 IS PRIME.
547 IS PRIME.
2456 IS NOT PRIME.
34 IS NOT PRIME.

守则:

import static java.lang.System.*;
import java.lang.Math;

public class Prime
{
    private int j;

    private  int result = 0;

    public Prime()
    {
        j = 0;            
    }

    public  Prime(int num)
    {
        j = num;
    }

    public void setPrime(int num)
    {
        j = num;
    }

    //boolean isPrime()   goes here

    public boolean isPrime()
    {           
        boolean prime = true;
        for(int i = 2; i<= j/2; i++)
        {
            if(j % i >= 0)
            {
                prime = false;
            }
            prime = true;
        }
        return prime;            
    }

    public String toString()
    {            
        if( isPrime() == false)
        {
            return "Number: " + j + " is Not Prime.";
        }
        else
        {
            return "Number: " + j + " is Prime. ";
        }           
    }

}

我已经安排好了跑步者,我正在阅读一份文件。问题是java没有通过后面的if语句


共 (1) 个答案

  1. # 1 楼答案

    你的情况不对

      if(j % i >= 0)
    

    这永远是真的

    换成

      if(j % i == 0)
    

    并从循环中删除prime = true;,否则您的方法将始终返回true

    实际上,您可以去掉prime变量,找到除数后只需返回false

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