引入:
最近网上看了一组JAVA面试算法题,我就尝试都做了下,每个都给出相应的JAVA实现,方便自己复习下差不多遗忘的算法。现在比较好的公司面试几乎都会面算法吧。
题目:
列出A到B区间(A<=X<=B)中所有的素数,并且打印出来
代码:
很简单,主要就是判断一个数是否为素数,方法是如果是1,那么不是素数,如果大于1,那么从2一直到它平方根,依次让该数对这些数取模,如果为0(表示整除了) ,那么就不是素数,否则是素数。
package com.charles.algo;
/**
*
* 题目:列出A到B区间(A<=X<=B)中所有的素数,并且打印出来
* @author charles.wang
*
*/
public class ListPrime {
private ListPrime(){}
/**
* 打印素数
* @param zoneMin
* @param zoneMax
*/
public static void printPrimes( int zoneMin,int zoneMax){
for(int i=zoneMin;i<=zoneMax;i++){
if(isPrime(i)){
System.out.print(i+" ");
}
}
}
/**
* 判断一个数是否是素数,判断的方法是用2,3,4..一直到 sqrt(number)的值去作为除数,
* 让number去除这些值,如果能整除,说明这个数不是素数
* @param number
* @return
*/
private static boolean isPrime(int number){
//1不是素数
if(number==1)
return false;
//判断一个数是否是素数,判断的方法是用2,3,4..一直到 sqrt(number)的值去作为除数,
//让number去除这些值,如果能整除,说明这个数不是素数
for( int i=2;i<=Math.sqrt(number);i++){
if (number%i ==0){
return false;
}
}
return true;
}
public static void main(String [] args){
int zoneMin =2;
int zoneMax=301;
System.out.println("打印区间["+zoneMin+","+zoneMax+"]内所有的素数:");
printPrimes(zoneMin, zoneMax);
}
}
转载于:https://blog.51cto.com/supercharles888/1345602