import java.util.ArrayList;
import java.util.List;
/**
* 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。
* @功能: TODO(这里用一句话描述这个类的作用) <br>
* @名称: CommTest <br>
* @日期: 2017年5月6日 上午10:49:43 <br>
* @创建人 idea<br> <br>
*/
public class CommTest
{
/**
* 判断给定的数是不是素数
* 创
建
人:idea
* 添加时间:2017年5月6日
* @param
* @return
*/
public static boolean isSushu(int num){
//初始化
boolean flag=true;
/**
* 判断num能否被除1和本身之外的其他数整除
* 判断范围:2-根号num
* 如果有能整除的数则不是素数,终止循环
* --尽量减少循环次数
*/
for(int i=2;i<=Math.sqrt(num);i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
/**
* 获取1001-9999范围内所有素数的集合
* 创
建
人:idea
* 添加时间:2017年5月6日
* @param
* @return
*/
public static List<Integer> getList(){
List<Integer> primes=new ArrayList<Integer>();
for(int i=1001;i<=9999;i++){
if(isSushu(i)){
primes.add(i);
}
}
return primes;
}
/**
* 获取可逆素数集合
* 创
建
人:idea
* 添加时间:2017年5月6日
* @param
* @return
*/
public static List<Integer> getObList(){
List<Integer> primes=getList();
List<Integer> oddprimes=new ArrayList<Integer>();
for (int i : primes)
{
/**
* 获取逆反数
*/
int q=i/1000;//千位
int b=i%1000/100;//百位
int s=i%100/10;//十位
int g=i%10;//个位
int obnum=g*1000+s*100+b*10+q;
if(isSushu(obnum)){
oddprimes.add(i);
}
}
return oddprimes;
}
/**
* 获取没有偶数和5 的逆反素数
* 创
建
人:idea
* 添加时间:2017年5月6日
* @param
* @return
*/
public static List<Integer> getSpecList(){
List<Integer> oddprimes=getObList();
List<Integer> primes=new ArrayList<Integer>();
for (int i : oddprimes)
{
/**
* 判断没有偶数和5 的逆反素数添加的集合
*/
int q=i/1000;//千位
int b=i%1000/100;//百位
int s=i%100/10;//十位
int g=i%10;//个位
if(q%2==0||q==5||b%2==0||b==5||s%2==0||s==5||g%2==0||g==5){
continue;
}else{
primes.add(i);
}
}
return primes;
}
public static void main(String[] args){
List<Integer> primes=getList();
System.out.println("1001-9999以内素数共有"+primes.size()+"个");
List<Integer> oddprimes=getObList();
System.out.println("可逆素数有"+oddprimes.size()+"个");
primes=getSpecList();
System.out.println("1001-9999以内不含偶数或5的可逆素数共有"+primes.size()+"个:");
int index=1;
for (int i : primes)
{
if(index%10==0){
System.out.println(i);
}else{
System.out.print(i+" ");
}
index++;
}
}
}