1、需求
需求:判断101 ~ 200 之间有多少个素数,并输出所有的素数
素数 - 除1和它本身之外,不能被其他正整数整除,就叫素数(质数)
小技巧:从2开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数。
2、代码
package com.shuai.demo.firstDemo;
import java.util.Arrays;
public class PrimeNumberDemo {
public static void main(String[] args) {
findPrimeNumber(101,200);
}
private static int[] findPrimeNumber(int start,int end){
int[] primeNumbers = new int[end-start];
//定义一个Boolean类型的变量
boolean isPrime = true;
int count = 0;
while (start <= end){
//从2开始遍历到该数的一半
for (int i = 2; i < (start / 2 + 1); i++) {
//取余数,等于0代表被整除
if (start % i == 0){
isPrime = false;
break;
}
}
//如果isPrime是true,代表为质数
if (isPrime){
primeNumbers[count] = start;
count++;
start++;
}else {
start++;
isPrime = true;
}
}
//Arrays.toString() 打印数组
//Arrays.copyOfRange(arrs,start,end) 从arrs数组中截取 start~end 一段的数组(包头不包尾)
System.out.println("primeNumbers = "+ Arrays.toString(Arrays.copyOfRange(primeNumbers,0,count)));
return primeNumbers;
}
}
3、结果
primeNumbers = [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]
4、使用技术
1、while循环
2、for循环
3、取余求整除
4、自增
5、Arrays.toString() 打印数组
6、Arrays.copyOfRange() 复制一段数组