确定素数Java

时间:2013-09-05 00:12:29

标签: java

我正在编写一个程序,它将整数作为输入,并输出一个消息,无论输入的整数是否为素数。我使用的算法如下...... 要求: n> 0,要求: isPrime< - true, i = 2到sqrt(n)如果 n%i = 0 那么 isPrime< - false 结束如果结束然后打印该号码是否为Prime。这是我的代码到目前为止,代码不起作用,我无法找到问题。

     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;
            }
        }
    }
}

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

2 个答案:

答案 0 :(得分:8)

你的问题在于这一行:

if (isPrime = true){

您进行了分配,而不是与true进行比较,因此该陈述始终为true

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

if (isPrime){

答案 1 :(得分:1)

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

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