我开班前在家自学写过一个类似的1-500内质数排序的 发出来给大家参考下 因为是刚看到面向对象的时候写的, 没有用到任何高级功能 写的也不优化 但是可以满足你的需要 只要加一个>100的判定就行了
- /**
- 需求:1-500以内的质数从大到小排序
- 思想:先整理质数保存到数组B,然后排序
- */
- class Sorting
- {
- void print(int[] b)//打印
- {
- System.out.print("{");
- for (int t=0;t<b.length-1 ;t++ )
- {
- System.out.print(b[t]+",");
- }
- System.out.println(b[b.length-1]+"}");
- }
- int[] sort(int[] b)//冒泡排序
- {
- for (int x=0;x<b.length-1 ;x++ )
- {
- for (int y=0;y<b.length-1-x && b[y]<b[y+1] ;y++ )
- {
- change(b,y,y+1);
- }
- }
- return b;
- }
- void change(int[]r,int a, int b)//置换位置
- {
- int temp;
- temp=r[a];
- r[a]=r[b];
- r[b]=temp;
- }
- int[] choose(int[] a)//返回质数数列
- {
- int i=0;//非质数数字的计数值
- for (int x=500;x>=1 ;x-- )//遍历1-500,清空数组中的非质数
- {
- out: for (int y=2;y<=x/2 ;y++ )//模数循环
- {
- if (x%y==0) //如果x能被除2到x/2的任何数整除,则x不是质数,
- {
- a[x-1]=-1; //将所有不是质数的值赋值为-1
- i++;
- break out; //如果能被整除一次代表非质数,跳出到下一个数开始循环
- }
- }
- }
- a[0]=-1;// 数字1不是质数,手动赋值
- int[] b=new int[500-i-1];//创建质数数组b,总数为500减去非质数的数值再减去1
- int index=0;
- for (int x=1;x<=500 ;x++ )//将a数组剩余的质数赋值到b
- {
- if (a[x-1]!=-1)
- {
- b[index]=a[x-1];
- index++;
- }
- }
- return b;
- }
- int[] add(int[] a)
- {
- for (int x=0;x<a.length ;x++ )//为数组赋值1-500
- {
- a[x]=x+1;
- }
- return a;
- }
- public static void main(String[] args)
- {
- int[] init=new int[500];
- Sorting array =new Sorting();
- init = array.add(init);
- int[] s = array.choose(init);
- init = null;//清空原始数组
- array.sort(s);
- array.print(s);
-
- }
- }
复制代码 |