首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算质数(新手)

计算质数(新手)
EN

Stack Overflow用户
提问于 2015-09-26 00:04:40
回答 7查看 123关注 0票数 2

这个程序检查用户输入的数字是否为质数。

我的问题出在if语句中。由于某些原因,Boolean从未被切换过。如果这个数是质数,它只会给出两个结果。

我遗漏了什么?

代码语言:javascript
复制
import java.util.Scanner;
public class Prime 
{

     public static void main(String[] args)
    {
       System.out.println("Enter a number to check if it is prime:");
       Scanner kb = new Scanner(System.in);
       int n = kb.nextInt();
       boolean more = true;

       do
       {
           for (int i = 2; i <= n; i++)
           {
               if (n <=1 || n%i==0) 
               {
                    System.out.println(n + " is not prime");
                    more = false;
               }              
            } 
       }
       while (more);
       System.out.println(n + " is prime");
    }
}
EN

回答 7

Stack Overflow用户

发布于 2015-09-26 00:08:30

删除if()中的打印代码,并在do while循环之后使用以下代码

代码语言:javascript
复制
if(more)
 System.out.println(n + " is prime");
else
 System.out.println(n + " is not prime");

而且你也不需要一个do while循环删除it.Complete代码

代码语言:javascript
复制
 System.out.println("Enter a number to check if it is prime:");
 Scanner kb = new Scanner(System. in );
 int n = kb.nextInt();
 boolean more = true;


 for (int i = 2; i <= n / 2; i++) {
    if (n <= 1 || n % i == 0) {

        more = false;
        break;
    }
 }
 if (more) System.out.println(n + " is prime");
 else System.out.println(n + " is not prime");
票数 2
EN

Stack Overflow用户

发布于 2015-09-26 00:35:10

使用for循环可以在几行代码中检查质数。这对性能更好。

用于检查素数的代码:

代码语言:javascript
复制
    boolean isPrime = true;
    for (int i = 2; i < n && isPrime; i++) {
        isPrime = !(n % i == 0);
    }

根据您的示例完整类:

代码语言:javascript
复制
import java.util.Scanner;

public class Prime {

    public static void main(String[] args) {
        System.out.println("Enter a number to check if it is prime:");
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();

        boolean isPrime = true;
        for (int i = 2; i < n && isPrime; i++) {
            isPrime = !(n % i == 0);
        }

        System.out.println(n + " is prime - " + isPrime);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2015-09-26 00:18:55

试试这个:

代码语言:javascript
复制
public static void main(String[] args) {
        System.out.println("Enter a number to check if it is prime:");
           Scanner kb = new Scanner(System.in);
           int n = kb.nextInt();
           boolean prime = true;

               for (int i = 2; i <n; i++)
               {
                   if (n <=1 || n%i==0) 
                   {
                        prime = false;
                        break;
                   }
                }
               if(prime)
               {
                   System.out.println(n + " is prime");
               }
               else
               {
                   System.out.println("Not prime");
               }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32786291

复制
相关文章

相似问题

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