当前位置: 首页 > 面试题库 >

如何确定数字是否为质数

夏侯衡
2023-03-14
问题内容

好的,我的问题不是如何确定数字是否为质数,因为我想我已经知道了,但是更多的是如何使其正确显示。

这是我的代码:

public static void main(String[] args) {
    // Declare Variables
    int randomNumbers = 0;
    int sum = 0;
    //Loop for number generation and print out numbers
    System.out.print("The five random numbers are: ");
    for (int i = 0; i <= 4; i++)
    {
        randomNumbers = (int)(Math.random()*20);
        sum += randomNumbers;

        if (i == 4) {
            System.out.println("and " + randomNumbers + ".");
        }
        else {
            System.out.print(randomNumbers + ", ");
        }
    }
    //Display Sum
    System.out.println("\nThe sum of these five numbers is " + sum + ".\n");

    //Determine if the sum is prime and display results
    for(int p = 2; p < sum; p++) {
        if(sum % p == 0)
            System.out.println("The sum is not a prime number.");
        else 
            System.out.println("The sum is a prime number.");
        break;
        }
    }


}

现在我的问题是,如果数字最终等于9,它会说它是质数,而不是。我认为问题在于中断在一个循环后就停止了它,因此它不会递增变量p,因此仅测试除以2(我认为)。但是,如果我删除断点,它将在每次通过时打印出“和不是素数”,直到退出循环为止。不知道该怎么办。


问题答案:

查找数字是否为素数的方法是正确的方法。为了使其不能始终如一地打印出该数字是否为质数,可以使用一个外部变量,该变量表示该数字是否为质数。

    boolean prime = true;
    for (int p = 2; p < sum; p++) {
        if (sum % p == 0) {
            prime = false;
            break;
        }
    }
    if (prime)
        System.out.println("The sum is a prime number.");
    else
        System.out.println("The sum is not a prime number.");

通过执行此方法,程序将假定数字为质数,直到证明错误为止。因此,当发现它不是素数时,会将变量设置为false并退出循环。

然后,在循环结束后,您只需打印数字是否为质数。

可以使此循环更快的一种方法是,从p = 2到p =和的平方根。因此,使用此方法,您的for循环将如下所示:

    double sq = Math.sqrt((double)sum);
    for (int p = 2; p < sq; p++) {
        //Rest of code goes here
    }

希望这可以帮助



 类似资料:
  • 问题内容: 我在RosettaCode上找到了以下Java代码示例: 我不是特别了解Java,但除了正则表达式本身以外,都了解此代码段的所有方面 当您在内置PHP函数中找到它时,我对Regex有了基本的了解。 素数如何匹配? 问题答案: 您说您了解这部分,但仅强调一下,生成的字符串的长度等于提供的数字。因此,当且仅当字符串包含三个字符。 正则表达式的第一部分说:“任何字符,零次或一次”。因此,基本

  • 所以我有一个问题,当我计算一个数字时,比如说15,我必须显示这个:15=3x5,但我得到的是3x5x5,我不知道如何使它变成这样,所以它只显示3x5。还有一个问题是,我输入的数字是否是素数。有办法解决这个问题吗?我只需要这些,然后再编辑其他东西。

  • 问题内容: 我正在尝试编写一种方法,该方法将计算两个数字是否是赋值的相对质数。我主要是在寻找从哪里开始的答案。我知道有一种方法可以为我做很多事情,但是赋值几乎使我无需使用gcd或数组就可以做到。 我有点开始了,因为我知道我将不得不在for循环中使用运算符。 显然,此方法仅将返回,或者因为该函数仅将根据这两个数字是否相对质数来打印特定行。 我想我可能不得不写两个循环,无论是和,可能还有一些类型的语句

  • 问题内容: 在Java中,有没有一种方法可以确定字符串的第一个字符是否为数字? 一种方法是 并一直执行到9点,但这似乎效率很低。 问题答案: 请注意,这将允许使用 任何 Unicode数字 ,而不仅仅是0-9。您可能更喜欢: 或较慢的正则表达式解决方案: 但是,使用这些方法中的任何一种,必须首先确保该字符串不为空。如果是,而且将引发。没有这个问题。 要使整个条件只占一行,并避免长度检查,可以将正则

  • 我试图编写一个方法,根据被计算的整数是否为素数返回true或false。下面的代码是我在阅读维基百科文章、之前的stackoverflow答案等的基础上拼凑而成的。目前,该程序对素数返回true,但不返回false。我希望在不使用任何内置函数的情况下执行此操作。我应该如何解决这个问题?

  • 问题内容: 假设您有一个要测试的字符串,以确保在继续其他代码之前,该字符串包含整数。在Java中,您将使用什么来确定它是否为整数? 问题答案: 如果要确保它 只是 一个整数并将其转换为一个整数,则可以在中使用parseInt。但是,如果要检查字符串是否包含数字,则最好将String.matches与正则表达式配合使用: