找素数

94 阅读1分钟

逻辑梳理

首先我们要明白素数的定义,即除1和本身之外没有其他能整除的数,我们称这样的数为素数。接下来,我们给一个场景,希望查询101-200之间的所有素数,输出每一个素数的同时,输出素数的个数。 根据素数的定义,我们可以通过一个flag标记是否有可以整除的数,值得一提的是,如果我们希望查找80是否是素数,应该在从1-40中找,也就是80/2,一旦超过一半,就不可能整除。因此我们在判断X是否是素数时,我们只需要判断2-X/2之间的数即可。

代码实现及说明

int count=0;//定义count用于记录素数的个数
boolean flag=true;//定义flag用来判断是否为素数
for(int i=101;i<=200;i++){//遍历101-200之间的所有数
            for(int j=2;j<i/2;j++){//遍历2-X/2之间的所有数
                if(i%j==0) {//判断,当i可以被除1和本身之外的数整除时,将flag设为false(表示非素数)
                    flag = false;
                }
            }
            if(flag){//如果遍历完2-X/2之间的所有数后flag依旧为true即表示其为素数(除1和本身之外没有数整除)
                count++;//素数个数+1
                System.out.println(i);                
            }
            flag=true;//最后无论他是否为素数,我们都要将flag重置,否则会失灵
        }