2

我正在编写一个程序,它将一个整数作为输入,并输出一条消息,无论输入的整数是否为素数。我使用的算法如下... Require: n>0, Require: isPrime <- true, for i=2 to sqrt(n) do , if n%i=0 then isPrime <- false end if and end对于Then 打印该数字是否为素数。到目前为止,这是我的代码,代码不起作用,我无法找到问题所在。

     public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);
    int n;
    System.out.println("Input a positive integer");
    n = kb.nextInt();

        while (n>0){
            boolean isPrime = true;
            for (int i =2; i <= n/2;i++){
                if(n % i == 0){
                    isPrime = false;
                    break;
                }
            }
            if (isPrime = true){
                System.out.println("The integer, " + n + ", is a prime");
                break;
            }
            else{
                System.out.println("The integer, " + n + ", is not a prime");
                break;
            }
        }
    }
}

如果有人可以提供帮助,我将不胜感激,谢谢!

4

2 回答 2

8

您的问题在于这一行:

if (isPrime = true){

你做了一个赋值,而不是比较 to true,所以语句总是true

用于==比较布尔值,或者更好,因为isPrime已经是boolean

if (isPrime){
于 2013-09-05T00:14:23.157 回答
1

在文本中,您说您打算实现的算法检查整数直到平方根,n但您的代码一直到n/2(参见 for 循环)。

您当前代码不起作用的原因是因为if (isPrime = true)是赋值操作,应该比较if (isPrime == true)注意两个等号。

于 2013-09-05T00:18:29.420 回答