![]() |
#2
凌风zx2017-05-06 11:31
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++; } } } |
1.集合基本操作:元素增、删、查找、更新、遍历输出
2.集合三大操作:交集、并集、差集
3.实训练习:设计一个类,要求找出1001~9999之间的所有的可逆素数
//要求步骤,即一个步骤对于一个方法:
//1.定义一个判定素数的方法
//2.找到1001~9999之间的所有的素数,保存到集合primes中
//3.在primes集合中,找到所有的可逆素数(素数abcd倒转后dcba仍然是素数),保存到集合oddprimes中
//4.在oddprimes集合中,找到所有不含偶数和5的可逆素数,保存到primes集合中
//5.输出oddprimes集合和primes集合,每行10个素数
//拓展要求.分别使用ArrayList(必选)、HashSet/TreeSet来实现上述算法
【1】1001-9999以内素数共有1061个;
【2】可逆素数有204个;
【3】1001-9999以内不含偶数或5的可逆素数共有22个:
1193 1399 1733 1913 1933 1979 3191 3319 3371 3373
3391 3719 3733 3911 3917 7177 7193 7717 9133 9173
9791 9931