【问题标题】:Determining whether a number is prime or not in Java using for loops在 Java 中使用 for 循环确定一个数是否为素数
【发布时间】:2018-02-18 22:27:41
【问题描述】:

我对 java 还很陌生,在过去的一年里我获得了一些使用 python 和 C++ 的编程经验;但是,我发现 java 更令人困惑。我在这里尝试做的是通过使用 for 循环确定数字(用户输入)是否为素数。这是我到目前为止的代码:

public static boolean isPrime(int x)
{
    boolean prime = true;
    if (x % 2 == 0)
        prime = false;
    if (x % 2 != 0)
    {
        for (int i = 3; i*i <= x; i+=2)
        {
            if (x % i == 0)
                prime = false;
        }
    }
    return prime;
}

我在这个问题上已经坚持了很长一段时间,如果有人能帮我解决这个问题,那就太好了。

【问题讨论】:

  • 你有什么错误吗?
  • 您的代码将为 1 返回 true,但 1 不是质数。此外, 2%2=0 所以你的代码将返回 false 为 2 尽管它是一个素数。
  • 我们应该弄清楚什么?你怎么称呼那个方法,你期望什么,你会得到什么?为什么你期望你所期望的?
  • 我得到的错误是,对于我进入第二个运行此方法的程序的任何数字,我一直收到错误消息。我很困惑从这里去哪里。我只想输入“2”,输出为真,或者输入“6”,输出为假。
  • 欢迎来到 Stack Overflow!看来您需要学习使用调试器。请帮助自己一些complementary debugging techniques。如果您之后仍有问题,请随时回来提出更具体的问题。

标签: java eclipse


【解决方案1】:

您的解决方案对 1 返回 true,对 2 返回 false

public static boolean isPrime(int x)
{
    if(x<2)
    return false; 
    if(x==2)
    return true;
    // boolean prime = true; you dont need the variavle
    if (x % 2 == 0)
        return false;
// using return is faster as you dont need to do more conditions
// also, you dont need the if. You could use else, if you dont want to return
// immediately   
        for (int i = 3; i*i <= x; i+=2)
        {
            if (x % i == 0)
                return false;
        }

    return true;
}

【讨论】:

  • Stack Overflow 是一个问答网站,而不是家庭作业写作服务。请不要让用户有理由相信。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多