1.素数定义和性质
- 素数又称为质数,指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
- 2是最小的质数。
2.简单输出
public static void solution() {
boolean Flag=true; //标识i是否被j除尽,一旦除尽,修改flag的值
for(int i=2;i<=100;i++) { //遍历1~100内所有自然数
for(int j=2;j<i;j++) { //遍历j: 被i去除
if(i%j==0) { //当i%j==0时,i被j除尽了
Flag=false;
}
}
if(Flag==true) { //当flag==true时说明此时i没有被j除尽,则i为质数
System.out.println(i);
}
Flag =true; //重置flag为true,进行下一次循环
}
}
3.优化输出
优化思路:i对j进行除法运算时,会得出
例如:98÷2=48,得到[2-48]一个区间,这是一个因数区间,98有许多个因数区间,所以我们可以在区间中找到对称点,只取左边小数一侧,则为[2-根号48]这个区区间。如果这个区间内i有因数,则他不为质数。
public static void solution2() {
boolean Flag=true;
for(int i=2;i<=100;i++) {
for(int j=2;j<=Math.sqrt(i);j++) { //优化2:将i进行开方,只取数轴小数一边
if(i%j==0) {
Flag=false;
break; //优化1:一旦i有除尽时,终止循环
}
}
if(Flag==true) {
System.out.println(i);
}
Flag =true;
}
}
4.实现方式2
利用标签continue跳出标签循环循环
public static void solution3() {
label:for(int i=2;i<=100;i++) {
for(int j=2;j<=Math.sqrt(i);j++) {
if(i%j==0) {
continue label; //一旦i除尽有因数,结束本次循环进行下一次循环
}
}
System.out.println(i);
}
}
5.如何判断素数
先给定一个flag作为判断,如果是素数则返回true,如果不是素数则赋值为false,break终止循环
public static void solution4() {
Scanner sc=new Scanner(System.in);
System.out.println("输入一个数字: ");
int Num=sc.nextInt();
boolean flag = true ;
for(int i=2;i<=Math.sqrt(Num);i++) {
if(Num%i==0) {
flag=false;
break;
}
}
System.out.println(flag);
sc.close();
}