首先在本题开始前要了解,什么是素数:
素数也称为质数,是指大于1的自然数中,除了1和它本身以外不再有其他因素的自然数;
这题的话我这边的话有一种方式,两种解题思路解答的;当然,如果你有更好的解答方法可以在评论区进行讨论;
第一种方法:
定义一个方法进行然后进行循环判断,第一层循环是循环每一个数
内嵌的循环,是为了循环去除以2到第一层循环前一位的数,如果第二层循环判断结束,如果还有余数,那么这个数就是质数,如果在循环内除以一个数没有余数的话,就判断他不为,直接跳出循环进入下一层循环
public class ApplictionController {
public static void main(String[] args) {
boolean a;//定义一个布尔类型的a
for(int i=2;i<=100;i++) {//进行一个循环,循环次数为需要判断的最大数
a =false;//给a进行一个赋值
for(int j=2;j<i;j++) {//定义一个新的循环,最数为i-1
if(i%j==0) {
a=true;//没有余数就结束此次j循环
break;}
}//如果除完都有余数的话就进行一个输出
if(!a) {
System.out.print(i+" ");
}
}
}
}
当然这种方法速度十分的慢,因为他每次都要重新去循环
第二种方式:
这种方式是我个人的一种想法,不过我不会操作,欢迎大佬留言指点
就是 首先,我们定义一个数组,这个数组为无穷,然后我们进行一个循环
循环为
for (int i=2;i<=n;i++){//n为你想要判断的区间的数
if(i==数组里面的数时候进行一个输出,这里用"||"){
//定义一些初始值,以 2 3 5 7为初始值,把这些值丢进那个数组里面
}else if(i% 数组内的数 != 0,这里用到&&){
/*这里的话,就是判断 i 如果除以数组里面的数如果
不等于0的话进行一个输出,并且把i丢进数组**/
}
}
这种方式的话就相当于,我们定义了一个数组,这个数组里面都是质数,我们去用i去除以数组里面的质数,如果除以这个数组里面的质数有余数的话我们就把他定义为质数,并且把他丢进数组里,这种方式我觉得要比第一种方式要快很多,不需要循环去除以每一个数,只需要除以数组里面的数字就可以了
欢迎各位大佬在下方评论区,进行探讨,以及指点.............................................................................................................................................................