(初学者)使用2个循环来确定数字是否为素数...对某些数字不起作用

时间:2015-03-05 06:00:00

标签: loops input while-loop division do-while

我要在这里发布我的程序的功能部分(不是hello和再见图形的方法......它们很好!)。基本上,程序让用户输入一个整数,确定它是否为素数,并询问他们是否想再次这样做。它继续运行循环直到他们说不。

这是我到目前为止所拥有的 主要:

public static void main (String[] args)
{
    Scanner scan = new Scanner (System.in);

    int n = 0, even = 2;
    int answer = 0;
    String reply;
    char doAgain = 'Y';

    Welcome();

    do
    {
    System.out.print("Enter a whole number: ");
    n = scan.nextInt();

    PrimeTest(n);

    System.out.print("Try another number? (Y/N): ");
    reply = scan.next().toUpperCase();
    doAgain = reply.charAt(0);
    System.out.println();

    }while(doAgain != 'N');

    Goodbye();
}

这里显然没有工作的部分 - 它对3没有任何作用,并说21是一个素数:

public static void PrimeTest(int n)
{
    int two = 2;

    while(two <= n / 2)
    {
        if(n % two == 0)
            {
            System.out.println(n + " is not a prime number.");
            System.out.println();
            }
        else
            {
            System.out.println(n + " is a prime number.");
            System.out.println();
            }
        break;
    }
}

任何帮助表示赞赏!无论是效率还是指出我搞砸了。请告诉我您需要的其他详细信息。

1 个答案:

答案 0 :(得分:0)

该测试尽可能错误......它只是检查一个数字是否均匀(但你已经替换了单词,因为它说它不是/不是一个素数)。

您也永远不会更改two,因此技术上while循环永远不会结束。

  

它没有为3

做任何事情
two <= n / 2等于3时,

n将始终评估为false - 因此无法打印任何内容,因为while循环不会被输入。

  

并说21是素数

你的模数计算表明21是奇数,但因为你已经改变了它显示为 prime 的措辞。