Java题目记录:在1~100中寻找素数(质数)
题目1:编写for循环,找出1~100中所有素数
题目2:编写for循环,找出1~10000中所有素数,并要求每8个换一行输出
寻找素数解题:
①首先素数概念:除1和它本身外没有其他因子可以整除的数,且1不是质数。
②思路:既然1不是质数,那么直接从2开始
遍历一遍2~100;在遍历的过程中,寻找到第一个数,它求余为0【这个就是它的因数】;
所有整数求余1结果都为0,反之思路第一点直接从2开始,这里第一个数求余为0一定不是“1”;
所以在寻找到第一个数,它求余这个数为0,且第一个数为它本身,这个就是质数。
③拓展:如果需要每8个换一行,可以设置一个变量记录打印的次数;
每到8次加一个换行符并清空打印次数。
题目1代码:
public class ForTest{
public static void main(String[] args){
//编写for循环,找出1~100中所有素数(质数)【除1和它本身外,不能被其他整数整除】
//思路:1不是质数,所以直接从2开始
//for循环变量i:2~100;嵌套一个for循环变量j:2~i做因子
//找到第一个i的因子【i % j ==0】,跳出嵌套的for循环。
//由于从2开始第一个因子如果是本身,则就是素数
int j;
for(int i=2;i<=100;i++){
for(j =2;j<=i;j++){
if(i%j == 0){
break;
}
}
if(i == j){//由于这里还得使用j,所以不能直接在嵌套的for循环定义,要在外边定义
System.out.print(i + " ");
}
}
}
}
题目2代码:
public class ForTest{
public static void main(String[] args){
//编写for循环,找出1~10000中所有素数,要求每8个换一行输出。
//找素数同上,这里要求每8行换一行输出,可以设置一个记录变量记录输出的一个值。
//每8次加一个换行符,然后清空记录
int j;
int record = 0;
for(int i=2;i<=1000;i++){
for(j =2;j<=i;j++){
if(i % j ==0){
break;
}
}
if(i==j){
System.out.print(i + " ");
record +=1;
if(record == 8){
System.out.print('\n');
record = 0;
}
}
}
}
}