素数计算。有人可以解释一下代码吗?

时间:2018-05-28 04:52:13

标签: java

请有人解释一下这是如何运作的?我不理解的代码行标记在代码中。

import java.util.Scanner;
    class PrimeCheck
    {
      public static void main(String args[])
      {     
        boolean isPrime=true;

        Scanner scan= new Scanner(System.in);
        System.out.println("Enter any number:");
        int num=scan.nextInt();
            scan.close();
        for(int i=2;i<num;i++)
        {           
           if(num%i==0)  // I don't understand this part!
           {
              isPrime=false; // I don't understand this part!
              break;
           }
        }
        if(isPrime)
           System.out.println(num + " is a Prime Number");
        else
           System.out.println(num + " is not a Prime Number");
       }
    }

3 个答案:

答案 0 :(得分:1)

您可以尝试以下代码。这应该向您展示%(modulo)运算符的工作原理。 简而言之,它将参数除以2并告诉您剩余部分

a = 2
isEven = (a % 2) == 0;

2除以2为1,给出0休息。由于0 == 0,数字偶数!

a = 5
isEven = (a % 2) == 0;

5除以2是2并且有1个休息。 1不等于0,因此数字不均匀。

答案 1 :(得分:0)

请检查https://www.tutorialspoint.com/computer_programming/computer_programming_operators.htm

中%运算符的解释

简而言之,程序将输入数字除以2中的所有数字到数字-1,如果它可以被该数字整除,则将isPrime设置为false(因为素数的定义)

答案 2 :(得分:0)

首先,模数运算符的作用是找到余数。

for ex - &gt; 5%2 = 1(余数)

如果数字只能被1和它自己(那个数字)整除,那么数字就是素数。

for ex - 2,3,5,7 .....这些只能被1和他们自己整除。

在你的程序中,1可以被所有数字整除,所以i = 2。 对于素数检查,我们在这里检查这个数字是否可以被任何其他数字整除。如果它可以被任何其他数字整除,那么&#34; isPrime&#34; flag变为&#34; false&#34;因为休息是控制来自循环。

然后检查&#34; isPrime&#34;那么它是一个&#34;素数&#34; 否则&#34;不是PRIME&#34;。