说明:除了1和它本身以外,不能被其他正整数整除,就叫素数
方法1:
java">package ZY;
public class Test7法1 {
//目标;找素数,方法1
public static void main(String[] args) {
int num1 = 101;
int num2 = 200;
int count = find(num1, num2);
System.out.println("一共有"+count+"个素数");
}
//定义一个找素数的方法
public static int find(int num1 ,int num2) {
int count = 0;//统计一共多少个素数的变量
//遍历数字,从num1开始到num2结束
for (int i =num1;i<=num2;i++){
// 信号位思想
boolean flag = true;// 假设的意思:默认认为当前i记住的数据是素数。
//判断每个数字是不是素数
//判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数;
for (int j = 2;j<=i/2;j++){
if (i%j==0){//要是这个数字能够被j中的数字整除则不是素数
flag = false;//不为素数不被记住
break;//并且结束此次内部循环
}
}
if (flag){//若为素数,flag=true并打印
System.out.println(i);
count++;//统计多少个素数
}
}
return count;
}
}
法2
java">package ZY;
public class Test7法2 {
//目标;找素数,利用指定标签
public static void main(String[] args) {
int num1 = 101;
int num2 = 200;
int count = find(num1, num2);
System.out.println("一共有"+count+"个素数");
}
//定义一个找素数的方法
public static int find(int num1 ,int num2) {
int count = 0;//统计一共多少个素数的变量
//遍历数字,从num1开始到num2结束
OUT: // 为外部循环指定标签OUT可以自己指定
for (int i =num1;i<=num2;i++){
//判断每个数字是不是素数
//判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数;
for (int j = 2;j<=i/2;j++){
if (i%j==0){//要是这个数字能够被j中的数字整除则不是素数
//进入这个地方的i就不是素数
continue OUT;//结束外部循环的当次执行!
}
}
System.out.println(i);
count++;//统计多少个素数
}
return count;
}
}
法3:
java">package ZY;
public class Test7法3 {
//目标;找素数,方法3利用多方法定义
public static void main(String[] args) {
int count = 0;//定义计数变量
for (int i = 101; i <= 200; i++) {//从101到200数字进行遍历
//定义到方法中去进行判断
if (Y(i)){//因为定义的是布尔类型,当返回的是true的时候执行一下代码
System.out.println(i);
count++;}
}
System.out.println("素数个数是"+count);
}
public static boolean Y(int n) {
//遍历判断
判断规则是:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数;
for (int i = 2; i <= n/2; i++) {
if (n % i == 0) {
return false;//n%i==0故不为素数返回false
}
}
return true;//除了if判断的会直接结束外,不满足if的都是素数
}
}