今天参加某行Java暑期实习生的面试,被最后一道找素数的代码题给整懵了,我也太菜了[流下了没有技术的眼泪]。
题目
找出200-300之间的素数,并打印
解题思路
首先要明白什么是素数,我确实有点记不清了。。。那么什么是素数呢?
素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。那怎么判断一个数是不是素数呢?
有三种判断条件
- 判断条件1:只能被1和本身整除的称为素数;
- 判断条件2:在区间(1,x/2)中找不到能整除素数x的整数;
- 判断条件3:在区间(1,sqrt(x))中找不到能整除素数x的整数;
代码
public class FindPrimeNumber {
//使用判断条件1
public static int isPrimeNumber(int n){
for(int i = 2; i < n; i++){
if(n % i == 0){
return 0;
}
}
return 1;
}
//使用判断条件2
public static int isPrimeNumber1(int n){
for(int i = 2; i < n / 2; i++){
if(n % i == 0){
return 0;
}
}
return 1;
}
public static void main(String[] args) {
for(int i = 200; i <= 300; i++){
if(isPrimeNumber1(i) == 1){
System.out.print(i + " ");
}
}
}
这也太简单了叭[眼泪哗哗哗哗的往下流]