又是素数,不知道素数可以理解一下
【问题描述】
定义静态方法findPrime(int []arr),找出数组arr中的全部素数。
素数也称质数,一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。
注意:你定义main函数的写法如下,不要修改main函数中的代码,否则会扣分!
public static void main(String[] args) {
int arr[]= {3,5,7,8,10,12,35,37,4583,8457};
findPrime(arr);
}
【输入形式】
无输入
【输出形式】
arr数组中的全部素数
【样例输入】
无
【样例输出】
3
5
7
37
4583
代码如下:
public class App2 {
public static void main(String[] args) {
int arr[]= {3,5,7,8,10,12,35,37,4583,8457};
findPrime(arr);
}
public static void findPrime(int arr[]){
for(int a=0;a<arr.length;a++){
int ss=2;
//定义ss为2,因为下面循环不考虑1和这个数本身;也就是arr[a]-1和b>1
for(int b=arr[a]-1;b>1;b--){
if(arr[a]%b==0){
//这里的意思就是,如果一个数能被除自己和1整除,
//它就不是素数,比如这个数是9,那么它能被 1<x<9以内某个整除就是不是素数,什么是整除:并不是说除直至到0,这个数只要能被x除得到一个整数就行
//这里就是直接跳出循环,判断数组中下一个数
break;
}else{
//这里相加看看最后等不等于判断的这个数
//因为比如说6 {6/5 6/4 6/3 6/2} :只要2个不被整除 有这几种情况,这种就不是质素,最后相加为2+1+1=4
//而7 {7/6 7/5 7/4 7/3 7/2}:5个都不被整除 有这几种情况,这种就不是质素,最后相加为2+5=7
ss+=1;
}
}
//循环结束,是素数就直接输出;
if(ss==arr[a]){
System.out.println(ss);
}
}
}
}