题目:编写for循环,找出1~100中所有的素数
考察知识点:
- for循环的灵活使用
- for循环的嵌套
- 标记
- break
- 统计
素数:又称质数,能够被1和自身整除,不能被其他数字整除的数字称为素数
编程思想:当你遇到一个问题不会解决时,先把它分解,分解成若干个小部分,把每个小部分解决之后,再把他们组合起来。 例如这道题,你可以先不管1~100,比如你从里面随便挑一个数字出来,去验证以下它是不是素数
public class ForTest09{
public static void main(String[] args){
//先编写程序,验证7这个数字是否为素数
/*
实现思路:
7 / 1【不需要】
7 / 2【7 % 2 != 0】
7 / 3【7 % 3 != 0】
7 / 4【7 % 4 != 0】
7 / 5【7 % 5 != 0】
7 / 6【7 % 6 != 0】
7 / 7【不需要】
结论:7是素数
如果说你要写程序把上面的思路实现你要如何实现?
*/
/*
int i = 7;
//byte b = 0;//默认将i看做一个素数【0表示素数,1表示非素数,标记的值你可以任意规定】
boolean isSuShu = true;//默认将i看做一个素数【标记在开发中比较常用,做标记用的最多的就是布尔类型】
//j是上面的:2 3 4 5 6
for(int j=2;j<i;j++){
if(i % j == 0){
//非素数
isSuShu = false;
//b = 1;
//已经知道i是非素数,跳出循环,效率较高
break;
}
}
System.out.println(isSuShu ? + i + "是素数" : i + "不是素数");
//System.out.println(b == 0 ? + i + "是素数" : i + "不是素数");
*/
//外部的for循环只负责取出每一个数字i
for(int i = 2;i<=100;i++){//1不是素数,所以i从2开始
//从这里开始的代码只判断i是否为素数
boolean isSuShu = true;
for(int j=2;j<i;j++){//1和本身不用验证,因为素数的定义
if(i % j == 0){
isSuShu = false;
break;
}
}
}
if(isSuShu){//是素数
System.out.println(i);
}
}
}
//升级版【加入统计机制】
int count = 0;
for(int i = 2;i<=100;i++){
boolean isSuShu = true;
for(int j=2;j<i;j++){
isSuShu = false;
break;
}
}
if(isSuShu){
System.out.print(i + " ");
count++;
if(count % 8 == 0){
//if(count == 8)
System.out.println();
//归0
//count = 0;
}
}