面试题:查找1-1000之间的素数,请说一下实现的思路。
面对这样的题目,先不要慌,想一下素数是什么,素数是除了1与它本身之外没有别的整数可以整除(百度上:一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除)
解题思路:
一个质数肯定不能被小于或等于它的根(注意:取整)的质数整除
下面展示我的实现代码(本人不太擅长表达)
//专门用来查找素数的类
public class Prime {
//所有素数
private int[] arr = new int[300];
//表数的个数
private int n_Elems = 0 ;
//查找1 到1000之间的所有素数
public void searchPrime(){
boolean flag = true;
for(int i = 2 ; i <= 1000 ; i++){
flag = true;
for(int j = 0 ; j <= n_Elems-1 && arr[j] <= (int)Math.pow(i, 0.5); j++){
if(i % arr[j] == 0){
flag = false;
}
}
if(flag){
arr[n_Elems++] = i;
}
}
}
//打印素数
public void print()
{
for(int i = 0 ; i < n_Elems ; i++){
if(i % 10 == 0){
System.out.println();
}
System.out.print(" " + arr[i]);
}
}
public static void main(String[] arge){
Prime p = new Prime();
p.searchPrime();
p.print();
}
}