- /*
- * 需求:打印输出100以内的素数的累加和。
- *
- * 思路:
- * 采用双循环,外循环i从2-100;
- * 内循环 j从2-(i-1),写一个判断语句,如果能够被2-(i-1)中的任意一个数整除,将标记p改为1,跳出内循环;
- *
- * 如果标记p没变为0,是素数,累加;
- * */
- public class exercise {
-
- public static int ss()
- {
- int p,sum=0;
- for(int i=2;i<=100;i++)
- {
- p=0; //定义一个标志
- for(int j=2;j<i;j++)
- {
- if(i%j==0) //如果能够被2-(i-1)中的任意一个数整除,将标记改为1,跳出内循环。
- {
- p=1;
- break;
- }
- }
- if(p==0) //标志没变,是素数!
- sum=sum+i;
- }
- return sum;
- }
-
- public static void main(String[]args)
- {
- int he=ss();//调用素数函数
- System.out.println("100以内的素数和:"+he);
- }
- }
复制代码
- /*
- *2、 需求: 将该数组由小到大进行排列,数组中的素数全部赋值为零,并按阶梯状输出。*
- *
- *思路:
- * 1.用选择法排序,将数组从小到大排序;
- * 2.找素数
- * 采用双循环,外循环i从0-arr.length;
- * 内循环 j从2-arr[i],写一个判断语句,如果能够被2-arr[i]中的任意一个数整除,将标记p改为1,跳出内循环;
- *
- * 如果标记p没变为0,是素数,将数组的值改为0 arr[i]=0;
- * 3.将数组打印成阶梯状
- * 采用双循环,外循环i从0-arr.length,打印数组;
- * 内循环j从0-i,打印空格。
- */
- class Operate{
-
- //选择法排序
- public void sort(int[] arr)
- {
- for(int i=0;i<arr.length;i++)
- {
- for(int j=i+1;j<arr.length;j++)
- {
- if(arr[i]>arr[j])
- {
- int temp=arr[i];
- arr[i]=arr[j];
- arr[j]=temp;
- }
- }
- }
- }
-
- //打印输出数组
- public void printArrary(int[]arr)
- {
- for(int i=0;i<arr.length;i++)
- {
- if(i!=arr.length-1)
- System.out.print(arr[i]+",");
- else
- System.out.print(arr[i]);
- }
- }
-
- //找出数组中的素数,并将素数所在的位置赋0
- public void suShu(int[]arr)
- {
- int p;
- for(int i=0;i<arr.length;i++)
- {
- p=0;
- for(int j=2;j<arr[i];j++)
- {
- if(arr[i]%j==0)
- {
- p=1;
- break;
- }
- }
- if(p==0)
- arr[i]=0;
- }
- }
-
- //打印梯形
- public void printTiXing(int[]arr)
- {
- for(int i=0;i<arr.length;i++)
- {
- for(int k=0;k<i;k++)
- {
- System.out.print(" ");
- }
- System.out.println(arr[i]);
- }
-
-
-
- }
- }
- class exercise2 {
-
- public static void main(String[]args)
- {
- int[] arr=new int[]{2,5,9,10,48,95,154,31,59,69};
-
- Operate o=new Operate();
- o.sort(arr); //调用排序方法
- System.out.print("数组改变前:");
- o.printArrary(arr); //打印数组
-
- //打印改变后的数组
- System.out.println();
- System.out.print("数组改变后:");
- o.suShu(arr);
- o.printArrary(arr);
-
- //梯形输出数组
- System.out.println();
- System.out.println("输出数组:");
- o.printTiXing(arr);
-
- }
- }
复制代码
- /*
- *3.需求:打印倒杨辉三角。
- *
- * 思路:
- * 1.每行的天头结尾都为1,所以先来一个 循环语句将数组对应位置赋为1
- * 2. 从第3行开始,每个数为上一行的前两个数之和(除了开头和结尾的数1。
- * 采用双循环 外循环i从2 - n
- * 内循环j从1- i*/
- public class YangHui {
-
- public static void yangHui(int[][]arr,int n)
- {
-
- for(int i=0;i<n;i++)
- {
- arr[i]=new int[i+1];//开辟行空间
- arr[i][0]=1; //行头
- arr[i][i]=1; //行尾
- }
- for(int i=2;i<n;i++)
- {
- for(int j=1;j<i;j++)
- {
- arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
- }
- }
- //打印倒杨辉三角
- for(int i=n-1;i>=0;i--)
- {
- for(int k=i;k<n;k++)
- {
- System.out.print(" ");
- }
- for(int j=i;j>=0;j--)
- {
- System.out.print(arr[i][j]+" ");
- }
- System.out.println();
- }
- }
-
- public static void main(String[]args)
- {
- int n=8;
- int[][] arr=new int[n][];
- yangHui(arr,n);
- }
- }
复制代码
|