Prime测试,2位数字

Upv*_*ote 4 java primes loops

我想打印所有2位数的素数.这是我的代码:

    for(int input = 11; input <= 99; input += 2){
        for(int x = 2; x < (int)Math.sqrt(input) + 1; x++){
            if(input%x != 0){
                System.out.println(input);
                break;
            }else{
                break;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是它打印的数字如35或49不是素数.

mat*_*t b 7

您对完整性的测试不正确.input一旦找到input不能被整除的除数,就停止测试数字().

这不是素数的定义 - 你需要测试input数字不能被任何除数除以它的除数 - 换句话说,你需要x在将数字声明为素数之前测试所有的值.

你可以突破检查input % x != 0何时可input被整除的循环x,但不能在它不可分割的时候 - 你需要继续检查这个条件是否为真!

  • 你可以节省更多的工作,只需要测试你的数字的sqrt,因为任何超过你需要一个细长的除数或最终高于你的数字:) (2认同)

Mar*_*ers 6

我总是喜欢这样一个问题:最简单和最明显的答案是硬编码输出:

System.out.println("11\n13\n17\n19\n23\n29\n31\n37\n41\n43" +
   "\n47\n53\n59\n61\n67\n71\n73\n79\n83\n89\n97");
Run Code Online (Sandbox Code Playgroud)