首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用For循环获取素数

使用For循环获取素数
EN

Stack Overflow用户
提问于 2014-11-07 12:00:07
回答 1查看 2.4K关注 0票数 0

我必须使用for循环来获得质数,我有所有的东西,它运行,但它总是返回"is质数“。

示例输出:

代码语言:javascript
复制
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.

代码:

代码语言:javascript
复制
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. ";
        }           
    }

}

我已经设置好了runner,并且正在从文件中读取。问题是java没有通过后面的if语句。

EN

回答 1

Stack Overflow用户

发布于 2014-11-07 12:02:19

你的情况是错的。

代码语言:javascript
复制
  if(j % i >= 0)

总是正确的。

将其更改为

代码语言:javascript
复制
  if(j % i == 0)

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

实际上,一旦找到除数,就可以去掉prime变量并简单地返回false

代码语言:javascript
复制
   public boolean isPrime()
   {
       for(int i = 2; i<= j/2; i++)
       {
          if(j % i == 0)
          {
              return false;
          }
       }
      return true;
   }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26793828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档