黑马程序员技术交流社区

标题: ====>送技术分啦! 题已更改,1题最多3分,2.3题给5分... [打印本页]

作者: 夜默    时间: 2013-6-21 12:34
标题: ====>送技术分啦! 题已更改,1题最多3分,2.3题给5分...
本帖最后由 巩建 于 2013-6-24 12:59 编辑

                       截止时间:6.23晚10点
      你们真心让我伤不起了....结果忘了写的,不断改代码的,自己改了把对的改成错的,需要提示多少遍才能一次解决好所有问题?
      你们做完题,不要立即提交答案,虽然这个答题活动,你只要不是改了N次,一般是会给分的...但是你们也别这样整我啊...
      本次答题活动封顶五分,是我们版主小看了你们的实力,但是下次,再一个人占好几层,不断改代码,不贴结果的,版主会怒了的哦!{:soso__5246682039739057267_3:}

    活动结束后,分没有加的联系我QQ,备注 论坛 id  你的真实姓名, 发信息   链接 楼层   
    买了题的告诉我声,给您补上,广大黑马学员们,我错了{:soso_e154:}...
     其实2题只是把排序、素数判定和空格输出组合在一起,3题再百度可以搜到,就是变了输出方式。
     希望大家都能做一下,也相当于检查自己的学习情况... 有个零基础开始学的哥们能做出来,我相信你们都能做出来...

要求:
1.题目要自己做出来,即使百度也没有哦,原创的。

2.将程序写的清晰明了.注释到位.
3.回复的时候把代码贴出来.和运算后结果的图片,

  不会弄图片的贴出结果来,不要蒙混过关,随机抽查验证,违者扣技术分哦
4. 需要写出完整代码,不要用几句数学语言就解决了。
5.代码放到代码块中,不要压缩包(压缩包没分)
6.要写注释,没注释的没分...
7.对于本次活动的俩道题,存在异议的可以联系我。。。有奖励的哦...
8.技术分这个东东么,只要结果正确,注释清晰,2分到手,当然也可能是3分哦,俩道题一起做的,100层以前是2-5分哦。


题目:
    1.  打印输出一百以内的素数的累加和...  
    2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
    数组:  2   5    9    10   48     95   154     31  59    69
    3.手动输入一个自然数N,反向打印N行杨辉三角。

      2. 阶梯状输出            
      3.倒序杨辉三角












作者: 神之梦    时间: 2013-6-21 13:30
还要钱买啊,太坑了吧
作者: shang1jk    时间: 2013-6-21 13:45
第一个在这里:
  1. import java.util.Arrays;

  2. /*
  3. * 将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  4. * 数组:  2   5    9    10   48     95   154     31  59    69
  5. **/

  6. public class TestQ1 {

  7.         public static void main(String[] args) {
  8.                 int[] arr = {2,5,9,10,48,95,154,31,59,69};               
  9.                
  10.                 Arrays.sort(arr);                        //升序排列
  11.                
  12.                 for(int x=0; x<arr.length; x++)                //遍历
  13.                 {
  14.                         if(isSuShu(arr[x]))                                //如果是素数, 赋零
  15.                         {
  16.                                 arr[x] = 0;
  17.                         }
  18.                 }
  19.                
  20.                 show(arr);                                                        //输出
  21.                        
  22.         }
  23.        
  24.         public static boolean isSuShu(int num)                                //静态方法, 用于判断是否是素数
  25.         {
  26.                 for(int i=2; i<num; i++)
  27.                 {
  28.                         if(num%i == 0)
  29.                         {
  30.                                 return false;
  31.                         }
  32.                 }
  33.                 return true;
  34.         }

  35.         public static void show(int[] arr)                                //静态方法, 用于阶梯输出
  36.         {
  37.                 for(int x=0; x<arr.length; x++)                       
  38.                 {
  39.                         int y=x;
  40.                         while(y>0)                                                                //输出与当前元素脚标数相同个数的空格
  41.                         {
  42.                                 System.out.print(" ");
  43.                                 y--;
  44.                         }
  45.                         System.out.print(arr[x] + "\n");
  46.                 }
  47.         }
  48.        
  49. }
复制代码
输出:
0
  0
    9
      10
        0
          48
            0
              69
                95
                  154

===============
第二个麻烦, 没写, 要赶紧写博客了. .

作者: 王靖远    时间: 2013-6-21 15:18
  1. class ZhuanFen
  2. {
  3. public static void main(String[] args)
  4. {
  5. print();
  6. }

  7. /*
  8. * 1.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  9. 数组: 2 5 9 10 48 95 154 31 59 69

  10. * */

  11. public static boolean suShu(int i)//定义一个判断是否为素数的方法。
  12. {
  13. int count = 0;
  14. if (i == 1)
  15. return false;
  16. for(int x=1;x<=i;x++)
  17. {
  18. if((i%x)==0)
  19. count++;
  20. }
  21. if(count>2)
  22. return false;
  23. else
  24. return true;

  25. }

  26. public static void print()
  27. {
  28. int []i = {2,5,9,10,48,95,154,31,59,69};//来个int数组存需要处理的数
  29. System.out.print("数组改变前");
  30. for(int x=0;x<i.length-1;x++)
  31. {
  32. System.out.print(i[x]+" ");
  33. }
  34. System.out.println(i[i.length-1]);

  35. int []arr = new int[i.length];//来个新数组存素数变0后的数组。
  36. for(int x=0;x<i.length;x++)//遍历数组并打印。
  37. {

  38. if(suShu(i[x]))//调用suShu方法判断原数组的数是否为素数
  39. arr[x] = 0;
  40. else
  41. arr[x]=i[x];
  42. }
  43. System.out.print("数组改变后");
  44. for(int x=0;x<arr.length-1;x++)
  45. {
  46. System.out.print(arr[x]+" ");
  47. }
  48. System.out.println(arr[arr.length-1]);

  49. for(int x=0;x<arr.length;x++)
  50. {
  51. for(int y=0;y<=x;y++)
  52. {

  53. if(x==y)//为了打印阶梯型。
  54. System.out.println(arr[x]);
  55. else
  56. System.out.print(" ");
  57. }
  58. }
  59. }
  60. }
复制代码


_______________________________________________________________________________________________________________________________________________________________

  1. <P>class ZhuanFen1
  2. {
  3. public static void main(String args[])
  4. {
  5. int N =4;

  6. yanghui(N);
  7. }
  8. /*
  9. * 2.手动输入一个自然数N,反向打印N行杨辉三角。

  10. * */
  11. public static void yanghui( int N)
  12. {

  13. int a[][] = new int[N+1][];//定义一个二维数组。
  14. for(int i=0;i<=N;i++)//初始化二维数组
  15. {
  16. a[i] = new int[i+1];
  17. }

  18. for (int i = 0; i <= N; i++)//循环行数
  19. {

  20. for (int j = 0; j <= a[i].length - 1; j++) //循环列数
  21. {

  22. if (i == 0 || j == 0 || j == a[i].length - 1)

  23. a[i][j] = 1;//将两侧元素设为1

  24. else//元素值为其正上方元素与左上角元素之和

  25. a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
  26. }
  27. }

  28. for (int i=a.length-1-1;i>=0;i--)
  29. {

  30. for(int x =i+1;x<N;x++)
  31. System.out.print(" ");
  32. for (int j = 0; j <=a[i].length - 1; j++)
  33. System.out.print(a[i][j] + " ");

  34. System.out.println();//换行
  35. }

  36. }
  37. }</P>
  38. <P> </P>
复制代码




作者: liguangcaiup    时间: 2013-6-21 15:25
  1. public static void main(String[] args) throws Exception {
  2.                 int[] A = { 2, 5, 9, 10, 48, 95, 154, 31, 59, 69 };
  3.                 Arrays.sort(A);
  4.                 for (int i = 0; i < A.length; i++)
  5.                         if (SuShu(A[i]))// 是素数则置为零
  6.                                 A[i] = 0;
  7.                 for (int i = 0; i < A.length; i++) {// 阶梯打印结果
  8.                         for (int j = 0; j < i; j++)
  9.                                 System.out.print(" ");// 打印前导空格
  10.                         System.out.println(A[i]);
  11.                 }
  12.         }

  13.         public static boolean SuShu(int a) { // 判断是否是素数
  14.                 if (a == 2)
  15.                         return true;
  16.                 for (int i = 2; i < Math.sqrt(a); i++) {
  17.                         if (a % i == 0)
  18.                                 return false;
  19.                 }
  20.                 return true;
  21.         }
  22. }
复制代码

QQ截图20130621151932.jpg (21.85 KB, 下载次数: 0)

QQ截图20130621151932.jpg

作者: 王靖远    时间: 2013-6-21 15:48
王靖远 发表于 2013-6-21 15:18
__________________________________________________________________________________________________ ...
  1. class ZhuanFen
  2. {
  3. public static void main(String[] args)
  4. {
  5. print();
  6. }

  7. /*
  8. * 1.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  9. 数组: 2 5 9 10 48 95 154 31 59 69

  10. * */

  11. public static boolean suShu(int i)//定义一个判断是否为素数的方法。
  12. {
  13. int count = 0;
  14. if (i == 1)
  15. return false;
  16. for(int x=1;x<=i;x++)
  17. {
  18. if((i%x)==0)
  19. count++;
  20. }
  21. if(count>2)
  22. return false;
  23. else
  24. return true;

  25. }

  26. public static void print()
  27. {
  28. int []i = {2,5,9,10,48,95,154,31,59,69};//来个int数组存需要处理的数
  29. System.out.print("数组改变前");
  30. for(int x=0;x<i.length-1;x++)
  31. {
  32. System.out.print(i[x]+" "+"\t");
  33. }
  34. System.out.println(i[i.length-1]);

  35. int []arr = new int[i.length];//来个新数组存素数变0后的数组。
  36. for(int x=0;x<i.length;x++)//遍历数组并打印。
  37. {

  38. if(suShu(i[x]))//调用suShu方法判断原数组的数是否为素数
  39. arr[x] = 0;
  40. else
  41. arr[x]=i[x];
  42. }
  43. System.out.print("数组改变后");
  44. for(int x=0;x<arr.length-1;x++)
  45. {
  46. System.out.print(arr[x]+" "+"\t");
  47. }
  48. System.out.println(arr[arr.length-1]);


  49. System.out.println("输出数组");
  50. for(int x=0;x<arr.length;x++)
  51. {
  52. for(int y=0;y<=x;y++)
  53. {

  54. if(x==y)//为了打印阶梯型。
  55. System.out.println(arr[x]+"\t");
  56. else
  57. System.out.print(" ");
  58. }
  59. }
  60. }
  61. }
复制代码
加了制表符给改好看点了。

作者: 王靖远    时间: 2013-6-21 15:53
王靖远 发表于 2013-6-21 15:48
加了制表符给改好看点了。

哦哦 前面都是按顺序排的,忘掉看需求要排序了。等我改下
作者: 王靖远    时间: 2013-6-21 15:57
王靖远 发表于 2013-6-21 15:48
加了制表符给改好看点了。
  1. import java.util.*;
  2. class ZhuanFen
  3. {
  4. public static void main(String[] args)
  5. {
  6. print();
  7. }

  8. /*
  9. * 1.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  10. 数组: 2 5 9 10 48 95 154 31 59 69

  11. * */

  12. public static boolean suShu(int i)//定义一个判断是否为素数的方法。
  13. {
  14. int count = 0;
  15. if (i == 1)
  16. return false;
  17. for(int x=1;x<=i;x++)
  18. {
  19. if((i%x)==0)
  20. count++;
  21. }
  22. if(count>2)
  23. return false;
  24. else
  25. return true;

  26. }

  27. public static void print()
  28. {
  29. int []i = {2,5,9,10,48,95,154,31,59,69};//来个int数组存需要处理的数
  30. System.out.print("数组改变前");
  31. for(int x=0;x<i.length-1;x++)
  32. {
  33. System.out.print(i[x]+" "+"\t");
  34. }
  35. System.out.println(i[i.length-1]);
  36. Arrays.sort(i);

  37. int []arr = new int[i.length];//来个新数组存素数变0后的数组。
  38. for(int x=0;x<i.length;x++)//遍历数组并打印。
  39. {

  40. if(suShu(i[x]))//调用suShu方法判断原数组的数是否为素数
  41. arr[x] = 0;
  42. else
  43. arr[x]=i[x];
  44. }
  45. System.out.print("数组改变后");
  46. for(int x=0;x<arr.length-1;x++)
  47. {
  48. System.out.print(arr[x]+" "+"\t");
  49. }
  50. System.out.println(arr[arr.length-1]);


  51. System.out.println("输出数组");
  52. for(int x=0;x<arr.length;x++)
  53. {
  54. for(int y=0;y<=x;y++)
  55. {

  56. if(x==y)//为了打印阶梯型。
  57. System.out.println(arr[x]+"\t");
  58. else
  59. System.out.print(" ");
  60. }
  61. }
  62. }
  63. }
复制代码

作者: ytblght55    时间: 2013-6-21 17:25
这个题也忒难了,大家都是新手啊!!!这个代码写了我3个小时,里面有很多注释的地方是重复重复试验的结果,还有写地方还是懵懵懂懂,不过还是按照楼主的要求实现了功能,我这个代码是裹脚布又长又臭,不过很适合向我这样的新手,就是把这个需求简单话,然后按照自己的意思一条一条写代码..斑竹给分啊!!= =!!
  1. /*
  2. 需求 :将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  3.             数组:  2   5    9    10   48     95   154     31  59    69
  4. 思路:首先使用遍历数组,然后使用冒泡排序按从小到大的顺序排列,
  5.            然后对数组各个元素进行判断,如果(这个数)%(这个数-1)==0,那么就不是素数,
  6.            最后使用for循环输出数字
  7. 步骤:
  8.     1,首先定义一个数组,使用for循环遍历数组,冒泡排序使它从小到大排序
  9.     2,然后找出元素中的素数,赋为0
  10.     3,然后使用for循环按照阶梯状打印数组
  11. */
  12. class Test12{
  13.        
  14.         public static void main(String[] args) {
  15.                
  16.         int []  arr = {2,5,9,10,48,95,154,31,59,69};
  17.         show(arr);//遍历数组的函数
  18.         sort(arr);//排列数组的方式,从小到大
  19.         prime(arr);//将数组中为素数的元素改变为0,打印输出
  20.         ladder(arr);//按照需求将改变后的数组元素呈梯形状打印出来
  21. }
  22.         //这是一个罗列数组的函数show
  23.         public static void show(int arr[]){
  24.                 System.out.println("遍历原数组的各个元素");
  25.                 for (int i = 0; i < arr.length; i++) {//i为小脚标,i<数组的长度,i每次执行完自加一次
  26.                         System.out.print(arr[i]+" ");//打印元素
  27.                 }
  28.                 System.out.println();//这个是为了调用函数的时候取到换行的作用,后面的方法中结尾都有一个换行的打印输出
  29.         }
  30.         //冒泡排序从小到大的排序sort
  31.         public static void sort(int arr[]){
  32.                 System.out.println("从小到大排序的各个元素");
  33.                 for (int i = 0; i < arr.length; i++) {//遍历数组元素
  34.                         for (int j = 0; j < arr.length-i-1; j++) {//确定比较的次数,因为每次比较都会确定最小值所以-i-1               
  35.                                 if (arr[j]>arr[j+1]) {//arr[j]>arr[j+1]的时候我们要进行换位
  36.                                         int temp = arr[j];//用第三方变量temp来实现换位
  37.                                         arr[j]=arr[j+1];
  38.                                         arr[j+1]=temp;       
  39.                                 }
  40.                         }
  41.                         System.out.print(arr[i]+" ");//输出比较后的数组
  42.                 }
  43.                 System.out.println();//这个是为了调用函数的时候取到换行的作用,后面的方法中结尾都有一个换行的打印输出
  44.         }
  45.         public static void prime(int arr[]){
  46.                 System.out.println("将数组中是素数的元素定义为0,并打印出改变后的数组");
  47.                 loop://loop是个标记
  48.                 for (int i = 0; i < arr.length; i++) {//首先遍历数组元素,就相当于取得每个元素的值
  49.                         for (int j = 2;j<arr[i]; j++) {//因为我们是要素数所以我们就让(arr里面的元素)%(这个元素-1的值),这里我们遍历这个元素-1的值.
  50.                                 if (arr[i]%j==0) {//设置判断语句如果arr[i]这个元素%这个元素的值-1(即j)等于0,我们就继续回到循环
  51.                                 System.out.print(" " + arr[i]);//打印数组的元素,为了保证让素数变成0之后能打印出所有的元素,即 0 0 9 10 0 48 0 69 95 154这种样式
  52.                                         continue loop;//if判断flase的时候跳出当前循环  
  53.                                 }
  54.                                 //System.out.print(" " + arr[i]);  
  55.                         }
  56.                         //System.out.print(" " + arr[i]);
  57.                         arr[i]=0;//将这个元素赋值为0
  58.                     System.out.print(" " + arr[i]);//打印元素
  59.                         //System.out.println();
  60.                 }
  61.                
  62.                 System.out.println();//我起到了可爱的换行作用,你们可以忽略我
  63.         //ladder(arr);
  64.         }
  65.         public static void ladder(int arr[]){
  66.                 //prime(arr);
  67.                 System.out.println("将改变后的数组元素按照梯形状打印 ");
  68.                 for (int i = 0; i < arr.length; i++) {//控制行数,即长度
  69.                         for (int j = 0; j < i; j++) {//控制列数,即高度
  70.                                 System.out.print(" ");
  71.                         }
  72.                         System.out.println(arr[i]);
  73.                         //System.out.println();
  74.                 }
  75.        
  76.         }
  77.        
  78. }
复制代码

作者: ytblght55    时间: 2013-6-21 17:29
遍历原数组的各个元素
2 5 9 10 48 95 154 31 59 69
从小到大排序的各个元素
2 5 9 10 31 48 59 69 95 154
将数组中是素数的元素定义为0,并打印出改变后的数组
0 0 9 10 0 48 0 69 95 154
将改变后的数组元素按照梯形状打印
0
0
  9
   10
    0
     48
      0
       69
        95
         154

运行结果!!!!





作者: 关关雎鸠    时间: 2013-6-21 17:36

作者: 关关雎鸠    时间: 2013-6-21 17:37
关关雎鸠 发表于 2013-6-21 17:36

忘了截图。。
作者: 关关雎鸠    时间: 2013-6-21 17:42
关关雎鸠 发表于 2013-6-21 17:37
忘了截图。。

截图的!

QQ拼音截图未命名.png (9.59 KB, 下载次数: 0)

QQ拼音截图未命名.png

作者: 捌年    时间: 2013-6-21 18:14
第一题:
import java.util.*;
public class ArrayDemo{
public static void main(String args[]){
  int temp[] = {2,5,9,10,48,95,154,31,59,69} ;  //定义整数数组
  System.out.print("数组改变前:") ;         
  fun(temp) ;           //输出改变前的数组
  Arrays.sort(temp);         //升序排列数组
  System.out.print("数组改变后:") ;            
  fun(temp) ;           //输出改变后的数组
  for(int i = 0 ;i<temp.length ; i++){          //判断是否是素数,如果是,则变为0
   if(temp<=2){
    temp=0 ;
   }else{for(int j=2 ; j< temp ; j++){
      if(temp%j==0){
      break ;
      }else{
      temp=0 ;
      }
         }
   }
  }
  System.out.print("将数组中的素数变为0:");
  fun(temp) ;                                   //输出判断后的数组
  for(int i=0 ; i<temp.length ; i++){           //按阶梯状输出
   for(int j= 0 ; j<= i ; j++){        
    System.out.print(" ") ;
   }
   System.out.println(temp) ;
  }
}
public static void fun(int temp[]){      //定义一个打印数组的方法
  for(int i=0;i<temp.length;i++){
   System.out.print(temp+"\t") ;
  }
  System.out.println();                         //输出完后换行
}
}


作者: 姚志远    时间: 2013-6-21 18:18
排序的问题
  1. public class Test5 {

  2.         public static void main(String[] args) {
  3.                 int []arr={2,5,9,10 ,48 ,95 ,154,31 ,59 , 69};  //定义一个数组
  4.                 for(int i=0;i<arr.length-1;i++){               //  用双层循环对数组排序
  5.                         for(int j=i;j<arr.length-1;j++){
  6.                                 if(arr[j]>arr[j+1]){          //判断是否为最大数
  7.                                         int temp=arr[j];
  8.                                         arr[j]=arr[j+1];
  9.                                         arr[j+1]=temp;
  10.                                 }
  11.                         }
  12.                 }
  13.                 for(int i=0;i<arr.length;i++){  //打印排序后的数组
  14.                         System.out.print(arr[i]+"\t");
  15.                 }

  16.         }

  17. }
  18. [img]D:\\jad\\answer.jpg[/img]
复制代码

作者: ytblght55    时间: 2013-6-21 18:24
  1. /*
  2. * 需求:打印输出一百以内的素数的累加和
  3. 思路:首先按照素数的特点,打印素数然后相加求和
  4. 步骤:
  5. 1,遍历1-100的数
  6. 2,判断这个数是不是素数,是打印出来,用sum记录 sum+i的值
  7. 3,将这些素数相加求和
  8. * */
  9. public class Test13 {

  10. /**
  11. * @param args
  12. */
  13. public static void main(String[] args) {
  14. // TODO Auto-generated method stub
  15. int sum=0;//定义个sum来记录素数的值
  16. loop://标记点
  17. for (int i = 2; i<=100; i++) {//遍历1-100之间的数.
  18. for (int j = 2; j <i; j++) {//每个数和这个数-1进行比较
  19. if (i%j==0) {//判断i%j是否为0,如果为0跳重新执行一次函数
  20. continue loop;
  21. }
  22. }
  23. System.out.print(i+" ");//打印素数
  24. sum+=i;//用sum记录sum+i的值
  25. }
  26. System.out.println();
  27. System.out.println("sum="+sum);
  28. }
  29. }
  30. 运行结果:<IMG border=0 alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=21509&size=300x300&key=13c83738012d6416&nocache=yes&type=fixnone" aid="attachimg_21509">
复制代码

12.jpg (20.12 KB, 下载次数: 0)

12.jpg

作者: ︶ㄣ紫藤ㄜ︵    时间: 2013-6-21 18:26
package com.itheima;

import java.util.Arrays;

public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub

                //定义一个int类型数组进行保存这些数
                int []number={2,5,9,10,48,95,154,31,59,69};
                //用Arrays.sort排序函数进行排序
                Arrays.sort(number);
               
                //打印排好序的数字
                for(int i=0;i<number.length;i++){
                        System.out.print(" "+number[i]);
                        if(number[i]%2==0){
                                number[i]=0;
                                continue;
                        }
                }System.out.println();
               
                //用嵌套循环进行控制格式打印
                for(int i=0;i<number.length;i++){
                        //每行缩进的格式控制
                        for(int j=0;j<i;j++){
                                 System.out.print(" ");
                        }
                        System.out.print(number[i]);
                        System.out.print("\n");
                }
               
               
        }

}


请您检查验收,辛苦了。{:soso_e100:}
作者: ︶ㄣ紫藤ㄜ︵    时间: 2013-6-21 18:33
package com.itheima;
import java.util.Arrays;
public class Test {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  //定义一个int类型数组进行保存这些数
  int []number={2,5,9,10,48,95,154,31,59,69};
  //用Arrays.sort排序函数进行排序
  Arrays.sort(number);
  
  //打印排好序的数字
  for(int i=0;i<number.length;i++){
   System.out.print(" "+number[i]);
   if(number[i]%2==0){
    number[i]=0;
    continue;
   }
  }System.out.println();
  
  //用嵌套循环进行控制格式打印
  for(int i=0;i<number.length;i++){
   //每行缩进的格式控制
   for(int j=0;j<i;j++){
//每行前的空格
     System.out.print(" ");
   }
//输出数组元素   
System.out.print(number[i]);
//控制换行
   System.out.print("\n");
  }
  
  
}
}


QQ截图20130621182751.png (7.72 KB, 下载次数: 0)

QQ截图20130621182751.png

作者: ytblght55    时间: 2013-6-21 18:35
最后一个杨辉三角的,在网络上看挺多的代码,不过涉及到二维数组,这个还不是很理解,如果群主有人写出来了,麻烦发一份给我!!
作者: 黑马-王双    时间: 2013-6-21 18:36
  1. /*
  2. 类中有四个函数
  3. 主函数main:负责主程序运行,调用所需功能
  4. void PrintArray(int[] arr):对数组排序且将素数改为0
  5. boolean flag(int n):标记,判断是否是素数
  6. void Yanghui(int n):反向打印杨辉三角
  7. */
  8. import java.util.*;
  9. class YangHui
  10. {
  11. public static void main(String[] args)
  12. {

  13. int[] arr={2,5,9,10,48,95,154,31,59,69};
  14. System.out.println("第1题,打印数组");
  15. PrintArray(arr);
  16. System.out.print("第2题,请输入一个自然数N:");
  17. Scanner in=new Scanner(System.in);
  18. Yanghui(in.nextInt());

  19. }
  20. public static void PrintArray(int[] arr)
  21. {
  22. System.out.print("数组改变前");
  23. //for循环遍历数组
  24. for(int x=0;x<arr.length;x++)
  25. {
  26. System.out.print(arr[x]+" ");
  27. }
  28. //将数组由小到大进行排序
  29. Arrays.sort(arr);
  30. //换行
  31. System.out.println();
  32. System.out.println("数组排序后"+Arrays.toString(arr));
  33. System.out.print("数组改变后");
  34. //对排序后的数组进行遍历
  35. for(int x=0;x<arr.length;x++)
  36. {
  37. //是素数就改为0
  38. if (flag(arr[x]))
  39. arr[x]=0;
  40. System.out.print(arr[x]+" ");
  41. }
  42. System.out.println();
  43. System.out.println("输出数组");
  44. //阶梯状输出改变后的数组
  45. for (int x=0;x<arr.length;x++ )
  46. {
  47. //控制空格数
  48. for (int y=0;y<x;y++)
  49. {
  50. System.out.print(" ");
  51. }
  52. System.out.println(arr[x]);
  53. }
  54. }
  55. //如果一个数能被1和自身以外的数整除就不是素数
  56. public static boolean flag(int n)
  57. {
  58. for(int i=2;i<=n/2;i++)
  59. {
  60. if(n%i==0)
  61. return false;
  62. }
  63. return true;
  64. }

  65. public static void Yanghui(int n)
  66. {
  67. int arr[][] = new int[n][n];
  68. //每一行的首项和尾项为1
  69. for (int i = 0; i < n; i++)
  70. {
  71. arr[i][0] = 1;
  72. arr[i][i] = 1;
  73. }
  74. //从第二行开始遍历行,第j项的值是前一行的两数之和
  75. for (int i = 2; i < n; i++)
  76. {
  77. //从第二列开始遍历列
  78. for (int j = 1; j < n; j++)
  79. {
  80. arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
  81. }
  82. }
  83. //反向打印杨辉三角
  84. for (int i=n-1; i>=0; i--)
  85. {
  86. //控制每行的空格数
  87. for (int x=0;x<5-i;x++)
  88. {
  89. System.out.print(" ");
  90. }
  91. //打印二维数据的具体数值
  92. for (int j=0; j<=i; j++)
  93. {
  94. System.out.print(arr[i][j] + " ");
  95. }
  96. //每行结束后换行
  97. System.out.println();
  98. }
  99. }
  100. }
复制代码

test.jpg (37.21 KB, 下载次数: 0)

运行结果

运行结果

作者: 黑马-王双    时间: 2013-6-21 18:38
正文中的内容不知道怎样设置版主或作者可见
作者: 黑马-王双    时间: 2013-6-21 18:39
只有附件才能设置权限?不是附件不知道怎么弄了
作者: 捌年    时间: 2013-6-21 18:42
这是第一题,上面那个是第二题,看错了
public class Demo{
public static void main(String args[]){
  int sum = 0 ;
  boolean flag ;
  for(int i = 2 ; i<=100 ; i++){   
   flag = true ;
   for(int j = 2; j< i ; j++){
    if(i%j==0){                   //判断是否是素数
     flag = false ;
     break ;
    }
   }
   if(flag){                         //如果是素数,则加上
    sum += i ;
      }
  }
  System.out.print(sum) ;
}
}



作者: ︶ㄣ紫藤ㄜ︵    时间: 2013-6-21 18:47
不好意思,理解反了,没有看清题...{:soso_e127:}
老师真是大神呵呵,您辛苦了



package com.itheima;



import java.util.Arrays;
public class Test {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  //定义一个int类型数组进行保存这些数
  int []number={2,5,9,10,48,95,154,31,59,69};
  //用Arrays.sort排序函数进行排序
  Arrays.sort(number);
  
  //打印排好序的数字
  for(int i=0;i<number.length;i++){
   System.out.print(" "+number[i]);
   if(number[i]%2!=0||number[i]==2){
   
    number[i]=0;
    continue;
   }
  }System.out.println();
  
  //用嵌套循环进行控制格式打印
  for(int i=0;i<number.length;i++){
   //每行缩进的格式控制
   for(int j=0;j<i;j++){
     System.out.print(" ");
   }
   System.out.print(number[i]);
   System.out.print("\n");
  }
  
  
}
}

0.png (6.22 KB, 下载次数: 0)

0.png

作者: 捌年    时间: 2013-6-21 19:01
之前第二题错了,现在改正
import java.util.*;
public class ArrayDemo{
        public static void main(String args[]){
                int temp[] = {2,5,9,10,48,95,154,31,59,69} ;  //定义整数数组
                System.out.print("数组改变前:") ;         
                fun(temp) ;                                                                          //输出改变前的数组
                Arrays.sort(temp);                                                          //升序排列数组
                System.out.print("数组改变后:") ;            
                fun(temp) ;                        //输出改变后的数组
                boolean flag ;
                for(int i = 0 ; i<temp.length ; i++){   
                        flag = true ;
                        for(int j = 2; j< temp ; j++){
                                if(temp%j==0){                   //判断是否是素数
                                        flag = false ;
                                        break ;
                                }
                        }
                        if(flag){                         //如果是素数则变为0
                          temp=0 ;
                    }
                }
                System.out.print("将数组中的素数变为0:");
                fun(temp) ;                                   //输出判断后的数组
                for(int i=0 ; i<temp.length ; i++){           //按阶梯状输出
                        for(int j= 0 ; j<= i ; j++){                                                  
                                System.out.print(" ") ;
                        }
                        System.out.println(temp) ;
                }
        }

        public static void fun(int temp[]){                                  //定义一个打印数组的方法
                for(int i=0;i<temp.length;i++){
                        System.out.print(temp+"\t") ;
                }
                System.out.println();                         //输出完后换行
        }
}



作者: 杨政    时间: 2013-6-21 19:31
第一题:
  1. public class Test1 {
  2.         public static void main(String[] args){
  3.                 primeSum(100);
  4.         }
  5.         private static void primeSum(int n) {
  6.                 int sum = 0;
  7.                 //遍历2到100之间的自然数,为素数则累加
  8.                 for(int i=2; i<n; i++){
  9.                         if(isPrimeNumber(i)){
  10.                                 System.out.print(i+" ");
  11.                                 sum+=i;
  12.                         }
  13.                 }
  14.                 System.out.println(sum);
  15.         }
  16.         //素数判断方法
  17.         private static boolean isPrimeNumber(int n) {
  18.                 int m = 0;
  19.                 //不能被2到自身平方根的数整除,则为素数
  20.                 for(int i=2;i<=Math.sqrt(n);i++){
  21.                         if(n%i==0)
  22.                                 m++;
  23.                 }
  24.                 return m==0;
  25.         }
  26. }
复制代码
输出结果:1060
第二题:
  1. import java.util.Arrays;

  2. public class Test2 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 int[] arr = new int[]{2,5,9,10,48,95,154,31,59,69};
  8.                 mySort(arr);
  9.         }

  10.         private static void mySort(int[] arr) {
  11.                 //从小到大,自然排序即可
  12.                 Arrays.sort(arr);
  13.                 System.out.print("改变前数组: ");
  14.                 //打印排序后数组
  15.                 for(int i=0; i<arr.length;i++){
  16.                         if(i==arr.length-1)
  17.                                 System.out.println(arr[i]+" ");
  18.                         else
  19.                                 System.out.print(arr[i]+" ");
  20.                 }
  21.                 System.out.println("输出数组: ");
  22.                 for(int i=0; i<arr.length;i++){
  23.                         //遍历数组所有元素,如果是素数,则用0取代
  24.                         if(isPrimeNumber(arr[i]))
  25.                                 arr[i] = 0;
  26.                         //阶梯打印数组元素
  27.                         for(int j=0; j<i; j++){
  28.                                 System.out.print(" ");
  29.                         }
  30.                         System.out.println(arr[i]);
  31.                 }
  32.         }
  33.         private static boolean isPrimeNumber(int n) {
  34.                 int m = 0;
  35.                 //不能被2到自身平方根的数整除,则为素数
  36.                 for(int i=2;i<=Math.sqrt(n);i++){
  37.                         if(n%i==0)
  38.                                 m++;
  39.                 }
  40.                 return m==0;
  41.         }
  42. }
复制代码
输出结果:
改变前数组: 2 5 9 10 31 48 59 69 95 154
输出数组:
0
0
  9
   10
    0
     48
      0
       69
        95
         154

第三题:
  1. public class Test3 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 triangleMath(3);
  7.                 System.out.println("----------");
  8.                 triangleMath(4);
  9.                 System.out.println("----------");
  10.                 triangleMath(5);
  11.         }
  12.         private static void triangleMath(int n) {
  13.                 for(int i=n; i>0; i--){
  14.                         //获取代表每行数字的数组
  15.                         int[] arr = triangleArray(i);
  16.                         sopSpace(n-i);
  17.                         //按需求打印数组元素
  18.                         for(int j=0; j<arr.length; j++){
  19.                                 if(j==arr.length-1)
  20.                                         System.out.println(arr[j]);
  21.                                 else
  22.                                         System.out.print(arr[j]+" ");
  23.                         }
  24.                 }
  25.         }
  26.         //空格输出补偿
  27.         private static void sopSpace(int n) {
  28.                 for(int i=0; i<n; i++)
  29.                         System.out.print(" ");
  30.         }
  31.         //获取代表每行数字的数组的方法
  32.         private static int[] triangleArray(int n) {
  33.                 if(n>1){
  34.                         int[] arr = new int[n];
  35.                         //第一个和最后一个数字为1
  36.                         arr[0] = 1;
  37.                         arr[n-1] = 1;
  38.                         //第i个数字为上一行第i-1数与上一行第i数之和
  39.                         int[] previous = triangleArray(n-1);
  40.                         for(int i=1; i<arr.length-1;i++){
  41.                                 arr[i] = previous[i-1]+previous[i];
  42.                         }
  43.                         return arr;
  44.                 }
  45.                 //第一行为1
  46.                 else
  47.                         return new int[]{1};
  48.         }

  49. }
复制代码
输出结果:
1 2 1
1 1
  1
----------
1 3 3 1
1 2 1
  1 1
   1
----------
1 4 6 4 1
1 3 3 1
  1 2 1
   1 1
    1

作者: 李复安    时间: 2013-6-21 19:31
/*
第一题:

需求:将数组由小到大进行排列,数组中的素数全部赋值为零,并按阶梯状输出。
思路和步骤:(1)建一个selectSort()函数,给数组由小到大排序。
            (2)建一个ifPrime()函数进行素数判定,给素数赋值0。
                        (3)建一个printArray()函数,按阶梯状输出数组中的数。
*/
class  ArrayTest1
{
        public static void main(String[] args)
        {
                int arr[] = {2,5,9,10,48,95,154,31,59,69};
                selectSort(arr);//给int数组排序。
                ifPrime(arr);//素数判定,给素数赋值0。
                printArray(arr);//阶梯状输出。
        }
       
        /**
        给int数组排序。
        @param arr 接收一个int类型的数组。
        @param 给int数组进行从小到大选择排序。
        */
        public static void selectSort(int[] arr)
        {
                for (int x=0; x<arr.length-1 ; x++ )
                {
                        for(int y=x+1; y<arr.length; y++)
                        {
                                if(arr[x]>arr[y])
                                {
                                        swap(arr,x,y);
                                }
                        }
                }
        }
        /**
        给数组中元素进行位置的置换。
        @param arr  接收一个int类型的数组。
        @param a 要置换的位置
        @param b 要置换的位置
        */
        private  static void swap(int[] arr,int a,int b)
        {
                int temp = arr[a];
                arr[a] = arr[b];
                arr[b] = temp;
        }
        /**
        对一个数组中的数进行判断,把素数赋值为0。
        @param arr 接收一个int类型的数组。
        @param 对这个数组中遍历。
        @param 判断这个数组中的每个数是否素数,如果素数则赋值为0。
        */
        public static void ifPrime(int[] arr)
        {
                for (int x=0; x<arr.length; x++ )
                {
                        int count = 0;
                        for (int j=1; j<=arr[x]; j++)
                        {
                                if(arr[x]%j == 0)
                                        count++;
                        }
                        if(count==2)
                                arr[x] = 0;
                }
        }
        /**
        用于打印数组中的元素。打印形式是阶梯状。
        */
        public static void printArray(int[] arr)
        {
                for(int x=0; x<arr.length; x++)
                {
                        for(int y=1;y<=x;y++)
                        {
                                System.out.print("\t");
                        }
                        System.out.println(arr[x]);
                }
        }
}

/*
  第二题:

  需求:输出倒序杨辉三角。
  思路:(1)创建一个正序杨辉三角。发现杨辉三角中有行和列,行数
             和列数相同,建立一个二维数组,把杨辉三角中的数全部放到
                     二维数组中。
        (2)倒序打印这个二维数组,可以得到倒序的杨辉三角。

  步骤:(1)创建一个yangHui()函数,用于建立一个正序杨辉三角,并赋
             相应的数值。
        (2)创建一个printArr()函数,用于倒序打印杨辉三角。
                (3)在yangHui()函数中调用printArr()函数,在main()中调用
                     yangHui()函数。可以得到倒序杨辉三角。
*/

class ArrayTest2
{
        public static void main(String[] args)
        {
                yangHui(5);//要打印的倒序杨辉三角图形有五行,因此把5传给yangHui()函数。
        }

        /*
        建一个正序的杨辉三角函数yangHui()。
        */
        public static void yangHui(int row)
        {
                int[][] arr = new int[row][row];
                for (int x=0; x<row; x++)
                {
                        for (int y=0;y<=x ;y++ )
                        {
                                if (y==0 || y==x)
                                {
                                        arr[x][y] = 1;//杨辉三角每行的行首和行尾数值都是1。
                                        continue;
                                }
                                else
                                        arr[x][y] = arr[x-1][y-1] + arr[x-1][y];//在杨辉三角相应位置赋值。
                        }
                }
                printArr(arr,row);
        }


        /*
        建一个用于倒序打印杨辉三角的printArr函数。
        */
        private static void printArr(int[][] arr,int row)
        {
                for (int x=row-1; x>=0; x--)
                {
                        for (int m=row-1; m>x; m--)
                        {
                                System.out.print("\t");
                        }
                        for (int y=0;y<=x ;y++ )
                        {
                                System.out.print(arr[x][y]);
                                System.out.print("\t\t");
                        }
                        System.out.println();
                       
                }
        }
                               
}


运行结果图示.jpg (54.02 KB, 下载次数: 0)

运行结果图示.jpg

作者: 杨政    时间: 2013-6-21 19:35
重新上传了运行结果图片

1.jpg (13.6 KB, 下载次数: 0)

第一题结果

第一题结果

2.jpg (12.95 KB, 下载次数: 0)

第二题结果

第二题结果

3.jpg (10.84 KB, 下载次数: 0)

第三题结果

第三题结果

作者: 刘利民    时间: 2013-6-21 19:46
先做一、二题吧

  1. <P> </P>
  2. <DIV class=blockcode>
  3. <BLOCKQUOTE>/*
  4. 需求1:打印输出一百以内的素数的累加和...

  5. 分析:
  6. 1.定义两个函数:
  7. 求100以内的素数
  8. 求和。sum
  9. */
  10. class PrimeSum
  11. {
  12.         public static void main(String[] args)
  13.        {
  14.               int sum = 0;//初始化num.

  15.              for(int i=2; i<=100; i++)//素数只被1和他本身整除,根据这个特性可以求出素数,通过两次遍历,可求得,100以内的素数。
  16.             {
  17.                     boolean flag = true;//判断是否为素数的标志。

  18.                     for(int j=2; j<i; j++)
  19.                    {
  20.                          if(i%j==0)
  21.                         {
  22.                               flag = false;
  23.                               break;
  24.                         }
  25.                    }
  26.                   if(flag)
  27.                   {
  28.                          sum = sum + i;
  29.                   }
  30.             }
  31.        System.out.println("sum:"+sum);
  32.      }
  33. }

  34. /*
  35. 需求2:1.将该数组由小到大进行排列,数组中的素数全部赋值为零,并按阶梯状输出。
  36. 数组: 2 5 9 10 48 95 154 31 59 69

  37. 分析:
  38. 1.先将该数组由小到大进行排列。
  39. 2.定义函数求出素数。
  40. 3.把符合素数要求的赋值为零。
  41. 4.按阶梯状输出。

  42. 步骤:
  43. 1.素数:prime; 数组array;
  44. 2.将数组由小到大进行排列:
  45. 本次需求采用冒泡排序。
  46. 3.定义一个函数专门求素数。
  47. 满足条件的数赋值成0。
  48. 4.采用双遍历按阶梯状输出。
  49. */

  50. class ArrayPrime
  51. {
  52.              public static void main(String[] args)
  53.             {
  54.                    int[] arr = {2, 5, 9, 10, 48, 95, 154, 31, 59, 69};
  55. //排序前
  56.                    System.out.print("数组改变前: ");printArray(arr);
  57.                    System.out.println();
  58. //排序
  59.                    bubbleSort(arr);
  60. //排序后
  61.                    System.out.print("数组改变后: ");

  62. /*
  63. 求素数:素数只被1和他本身整除,根据这个特性可以求出素数。
  64. */
  65.                   int pr = 2;
  66.                   for(int i=2; i<=154; i++)
  67.                  {
  68.                         boolean flag = true;

  69.                         for(int j=2; j<i; j++)
  70.                        {
  71.                                if(i%j==0)
  72.                               {
  73.                                     flag = false;
  74.                                     break;
  75.                               }
  76.                       }
  77.                     if(flag)
  78.                     {
  79.                            for(int y=0; y<arr.length-1; y++)
  80.                             {
  81.                                   if(arr[y] == i)
  82.                                  arr[y] = 0;
  83.                             }
  84.                     }
  85.               }

  86.         printArray(arr);

  87.        System.out.println("输出数组: ");

  88.         printArray1(arr);
  89. }
  90. //尝试了很多次,发现还是不能用定义的函数来对满足的素数进行操作,也就是所说的赋值成0.
  91. //若版主有时间,可以帮忙找下原因,为什么下面定义的方法不行。

  92. // public static void getPrime(int pr)
  93. // {
  94. //// int pr = 2;
  95. // for(int i=2; i<=100; i++)
  96. // {
  97. // boolean flag = true;
  98. //
  99. // for(int j=2; j<i; j++)
  100. // {
  101. // if(i%j==0)
  102. // {
  103. // flag = false;
  104. // break;
  105. // }
  106. // }
  107. // if(flag)
  108. // {
  109. // compare(arr, i);
  110. // }
  111. // }
  112. // }
  113. //
  114. // public static void compare(int[] arr, int x)
  115. // {
  116. // for(int y=0; y<arr.length-1; y++)
  117. // {
  118. // if(arr[y] == x)
  119. // arr[y] = 0;
  120. // }
  121. // }

  122. /*
  123. 定义一个互换功能的函数。
  124. */
  125.           public static void bubbleSort(int[] arr)
  126.           {
  127.                  for (int x=0; x<arr.length; x++)
  128.                 {
  129.                        for (int y=0; y<arr.length-1-x; y++)
  130.                        {
  131.                              swap(arr, y, y+1);
  132.                        }
  133.                }
  134.           }

  135. /*
  136. 打印输出。
  137. */
  138.          public static void printArray(int[] arr)
  139.         {
  140.               for (int x=0; x<arr.length; x++)
  141.              {
  142.                         System.out.print(arr[x]+"\t");
  143.               }
  144.         }

  145. /*
  146. 定义一个按阶梯状输出数组元素功能的函数。
  147. */
  148.          public static void printArray1(int[] arr)
  149.          {
  150.                 for (int x=0; x<arr.length; x++)
  151.                 {
  152.                       // System.out.print(arr[x]);
  153.                        for (int y=0; y<arr.length; y++)
  154.                       {
  155.                             while(y<x)
  156. //抱歉了,版主,貌似输出空格有个专门的功能,但还没有学到,故投机取巧了一下,用了此方法。
  157.                              {
  158.                                     System.out.print("\t");
  159.                                     y++;
  160.                              }
  161.                      }
  162.                         System.out.println(arr[x]);
  163.                 }
  164.         }

  165. /*
  166. 定义一个功能为排序的函数,方便以后调用。
  167. */
  168.           public static void swap(int[] arr, int a, int b)
  169.          {
  170.                if(arr[a]>arr[b])
  171.                {
  172.                      int temp = arr[a];
  173.                      arr[a] = arr[b];
  174.                      arr[b] = temp;
  175.                }
  176.         }

  177. }

复制代码

作者: 刘利民    时间: 2013-6-21 19:47

忘了发图了。。。补上,
作者: oxf974025918    时间: 2013-6-21 20:23
package com.heima;

public class PrimeNum {

        /**
         * 打印输出一百以内的素数的累加和...  
         * @author 欧雄风
         */
        public static void main(String[] args) {
                PrimeNum num=new PrimeNum();
                num.printPrime(100);

        }
        //判断是否是质素
        boolean isPrime(int n){
                for(int i=2;i<=n/2;i++){
                        if(n%i==0){
                                return false;//能被整除则不是素数
                        }
                }
                return true;
        }
        //打印一个小于m的质素的和
        void printPrime(int m){
                int j=0;
                for(int i=2;i<=m;i++){
                        if(isPrime(i)){
                                j+=i;          //计算累加
                        }
                }
                System.out.println(j);//打印和
        }

}

作者: 张莹楠    时间: 2013-6-21 20:26
  1. public class test {
  2.         public static void main(String args[]) {
  3.                 int i, j, add = 0;
  4.                         for (i = 2; i <= 100; i++) { // 从2循环到100
  5.                                 for (j = 2; j < i; j++) {// 从2开始判断j是否比i小
  6.                                 if (i % j == 0)
  7.                                 break; // 判断i是否能被j整除,如果为真就结束本次循环
  8.                         }
  9.                         if (j >= i) { // 判断j与i的大小
  10.                                 System.out.print(i + " "); // 如果为真就打印出i,这个数就是素数
  11.                                 add += i;                   //计算之和
  12.                                 System.out.println(""+add); //循环打印出每次之和
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码

QQ截图20130621202503.png (10.52 KB, 下载次数: 0)

最终答案是1060

最终答案是1060

作者: 刘利民    时间: 2013-6-21 20:27

嗯 ,谢谢版主,已经解决了!
作者: 陈鹏    时间: 2013-6-21 20:34
这是第一题的代码:
  1. class  ShuDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int m=0;
  6.                 for(int i=1,j;i<=100;i++)
  7.                 {
  8.                         int k=(int)Math.sqrt(i);
  9.                         for(j=2;j<=k;j++)
  10.                         {
  11.                                 if(i%j==0)
  12.                                 {
  13.                                     break;
  14.                              }
  15.                          }
  16.                          if(j>k)
  17.                         {
  18.                                 m=m+i;
  19.                         }
  20.                 }
  21.                 System.out.println(m);
  22.         }
  23. }
复制代码

作者: oxf974025918    时间: 2013-6-21 20:35
package com.heima;

import java.util.Arrays;

public class ArrayDemo {

        /**
         * 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
            数组:  2   5    9    10   48     95   154     31  59    69

         * @author oxf
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int arr[]={2,5,9,10,48,95,154,31,59,69};
                System.out.println("没有排序前:"+Arrays.toString(arr));
                Arrays.sort(arr);                       
                System.out.println("排序后:"+Arrays.toString(arr));//数组排序
                for (int i = 0; i < arr.length; i++) {
                        if(isPrime(arr[i]))                                //数组为质素设置为0
                                arr[i]=0;        //设置为0
                }
                System.out.println("数组中的素数全部赋值为零,排序后:"+Arrays.toString(arr));//数组中的素数全部赋值为零,排序后
               
        }
        //判断是否是质素
        static boolean isPrime(int n){
                for(int i=2;i<n/2;i++)
                        if(n%i==0)
                                return false;
                return true;
        }

}

作者: 风爽    时间: 2013-6-21 20:44
第一题:

  1. public class Test11 {
  2.        
  3.         public static int isPrimeNum(int number)//判断一个数是否为素数,若是则返回该数,否则返回0
  4.         {
  5.                 if(number <= 1)//小于等于1的数全部是素数
  6.                         return 0;
  7.                 if(number == 2)//2为素数
  8.                         return 2;
  9.                 int i = 2;
  10.                 for(i = 2; i <= number; i++)//循环遍历小雨number的数,当有余数等于0时,结束循环
  11.                 {
  12.                         if(number % i == 0)
  13.                                 break;
  14.                 }
  15.                 if(number == i)//判断是否为素数
  16.                         return number;
  17.                 else
  18.                         return 0;
  19.         }
  20.        
  21.         public static void main(String[] args)
  22.         {
  23.                 int sum = 0;
  24.                 for(int i = 1; i < 100; i++)//100以内的素数循环相加
  25.                 {
  26.                         sum = sum + isPrimeNum(i);
  27.                 }
  28.                 System.out.println(sum);
  29.         }
  30.        
  31. }
复制代码
结果是:1060;第二题:

  1. public class Test12 {
  2.        
  3.         public static void sort (int[] a)//对数组排序
  4.         {
  5.                 for(int i = 0; i < a.length - 1; i++)
  6.                 {
  7.                         for(int j = i + 1; j < a.length; j++)
  8.                         {
  9.                                 if(a[i] > a[j])
  10.                                 {
  11.                                         int t = a[i];
  12.                                         a[i] = a[j];
  13.                                         a[j] = t;
  14.                                 }
  15.                         }
  16.                 }
  17.         }
  18.        
  19.         public static boolean isPrimeNum(int number)//判断一个数是否为素数,若是则返回true,否则返回false
  20.         {
  21.                 if(number == 1)//1不是素数
  22.                         return false;
  23.                 if(number == 2)//2为素数
  24.                         return true;
  25.                 int i = 2;
  26.                 for(i = 2; i <= number; i++)//循环遍历小雨number的数,当有余数等于0时,结束循环
  27.                 {
  28.                         if(number % i == 0)
  29.                                 break;
  30.                 }
  31.                 if(number == i)//判断是否为素数
  32.                         return true;
  33.                 else
  34.                         return false;
  35.         }
  36.        
  37.         public static void main(String[] args)
  38.         {
  39.                 int a[] = {1,2,3,4,5};
  40.                 sort(a);                                //调用函数排序
  41.                 for(int i = 0; i < 5; i++)//循环遍历数组,将为素数的元素置为0
  42.                 {
  43.                         if(isPrimeNum(a[i]))
  44.                                 a[i] = 0;               
  45.                 }
  46.                 for(int i = 0; i < 5; i++)
  47.                 {
  48.                         int j = i;
  49.                         while(j != 0)        //控制空格输出的数量
  50.                         {
  51.                                 System.out.print("  ");
  52.                                 j--;
  53.                         }
  54.                         System.out.println(a[i]);//输出各元素
  55.                 }
  56.         }

  57. }
复制代码




版主第三题稍后再教可以不

作者: 陈鹏    时间: 2013-6-21 20:46
第一题的结果

QQ截图20130621204415.png (19.88 KB, 下载次数: 0)

QQ截图20130621204415.png

作者: 无气打火机    时间: 2013-6-21 20:49
我是你没该题做得 ,你后来那题我就放在第三题了,嘻嘻。还有第二题纯属是取巧,因为我完全不会,现在还在传智上基础班,第二题能给就给点技术分,拜托了,本菜鸟赚点技术分不容易。下面上代码:
第一题:


public class Demo {

        /**
         *     1.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
         *     实现思路:
         *                     1)定义一个数组,一个排列时用到得中间变量trm.
         *                     2)先用选择排序方法把数组从小到大排列出来
         *                     3)求质数,定义一个求质数时用到的变量inter,一个求质数时用到的boolean变量。
         *                     4)把数组以阶梯形状输出
         *                     5)完成
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Test t = new Test();
                t.arrange();
        }

}
class Test {
        int[] arr ={2,5,9,10,48,95,154,31,59,69};
        int temp;//中间变量
               
        public void arrange() {
                       
                for (int i = 0; i < arr.length-1; i++) {//定义外层for循环,控制一个数跟多个数比较。-1是为了提高代码的运行速度
                        for (int j = i+1; j < arr.length; j++) {//定义内层循环,控制顺序的跟外层的i进行多次比较,因为每次都是这个角标的数与下个角标的数比较,
                                                                                                                //不会出现同样的相同角标的数比较,所以j的值永远都比i大1,也就是i+1。

                                if(arr[i]>arr[j]) {//判断两个数,如果arr[i]大于arr[j]那么就利用中间变量把他们换位。
                                        temp=arr[i];
                                        arr[i]=arr[j];
                                        arr[j]=temp;
                                }
                        }
                }
                for (int x = 0; x < arr.length; x++) {//定义循环,遍历查看哪个是素数。
                        int inter=2;//临时变量,定义在这里是因为每循环一次都要初始化一次
                        boolean isZhi=true;//同上,每循环一次都要初始化一次

                        while(inter < (arr[x]/2)){//定义while循环,如果定义的临时变量小于数组当前角标里的数除以2,因为如果大于了相除的话肯定是由余数的。那么就进入循环。如果不那么不进入循环
                                if(arr[x] % inter == 0) {//求素数,循环判断当前角标下的数%临时变量,如果余数为0,那么代表不是素数,就把isZhi改为false,并且结束循环,
                                                                                        //如果余数不为0,那么代表该数是素数,isZhi依然是true       
                                        isZhi=false;
                                        break;//结束循环
                                }
                                       
                                inter++;
                        }
                               
                        if(isZhi) {        //判断如果isZhi是true,那么就把当前角标下的值改为0,如果为false,那么就不改变
                                arr[x]=0;
                        }               
                }
                       
                for (int i = 0; i < arr.length; i++) {//定义外层循环控制输出的行数
                        for (int j = 0; j < i; j++) {//定义层循环控制输出的空格数,因为每一行的空格都是随着行数的增加而增加,每一行的空格也是跟行数相等,所以j<i
                                System.out.print(" ");
                                       
                        }
                        System.out.println(arr[i]);
                }       
        }
}


第二题:(纯属取巧,请版主手下留情)
import java.util.Scanner;

/**
* 2.手动输入一个自然数N,反向打印N行杨辉三角。
* */
public class Demo1 {
        public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                System.out.println("请输入一个数:");
                int i = input.nextInt();
                Test1 t = new Test1();
                t.triangle(i);
        }
}
class Test1 {
        public void triangle(int i) {
                int p = 0;
                for (int x = 1; x <=i; x++) {
                        for (int y = 0; y<x; y++) {
                                System.out.print(" ");
                                 p=y;
                        }
                        assist(i);
                        for (int z = 0; z<=i-x ; z++) {
                                System.out.print(" "+i+" ");
                               
                        }
                        assist(i);
                        //System.out.print(" \n");
                        System.out.println("");
                }for (int j = 0; j <= p+2; j++) {
                       
               
                System.out.print(" ");
                }
                assist(i);
        }
        public void assist(int i) {
               
                if(i!=1){
                        System.out.print("1");
                        }
        }
}


第三题:



/**
*  1.  打印输出一百以内的素数的累加和...
*         分析:
*                 第一步:先找出一百以内的素数,利用循环,
*                 第二步:把他们相加,然后输出
*                                
* */
public class Demo2 {
        public static void main(String[] args) {
                Test3 t = new Test3();
                t.prime();
        }
}
class Test3 {
                int and;//定义一个变量接收素数累加;
                public void prime() {
                       
                        for (int i = 0; i <= 100; i++) {//利用循环遍历一百以内的所有数
                                int temp=2;//定义临时变量,把其赋值为2,因为所有数字都从2开始除。定义在这里是每循环一次就要初始化一次;
                                boolean isZhi=true;//每循环一次要初始化一次
                                while(temp<=i/2) {//判断临时变量是否大于一百以内的某个数除以二;因为如果大于了相除的话肯定是由余数的。
                                       
                                        if(i%temp==0) {//循环判断这个数除以临时变量是否没有余数,如果没有那么就不是素数。就把false赋值给isZhi;
                                                isZhi=false;
                                                break;//结束循环
                                        }
                                        temp++;
                                }
                                if(isZhi) {//判断如果isZhi为真 那么就把其输出,以及跟变量and相加然后赋值给and;
                                        System.out.println(i);
                                        and=and+i;
                                }
                        }
                        System.out.println("一百以内的素数和是:"+and);
                }
       
}


下面是结果图:


QQ图片20130621204324.jpg (16.01 KB, 下载次数: 0)

第一题

第一题

QQ图片20130621204623.jpg (18.02 KB, 下载次数: 0)

第二题

第二题

QQ图片20130621204819.jpg (20.2 KB, 下载次数: 0)

第三题

第三题

作者: 饭后小笼包    时间: 2013-6-21 20:57
第一题
代码:
C:\Documents and Settings\Administrator\桌面
//打印1~100质数的和

public class TestZS{
       
        public static void main(String[] args){
               
                int temp = 0;//定义一个中间变量用于质数之间的加法累计
               
                for(int i=2;i<=100;i++){//由于1不是质数也不是合数,定义一个i从2开始循环到100
                       
                        boolean b = true;//定义一个boolean类型的变量用于判断其是不是质数
                       
                        for(int a=2;a<i;a++){
                               
                                if(i%a==0){
                                       
                                        b = false;
                                       
                                        break;
                                }//if语句用于判断是不是质数
                        }
                       
                        if(b){
                               
                                temp +=i;
                        }//如果b为true,i为质数,把i的值赋予temp
                        else continue;
                }
               
        System.out.println(temp);//最终打印出来所有质数的和
        }
}
结果:
C:\Documents and Settings\Administrator\桌面
1060

第二题不会
作者: 陈鹏    时间: 2013-6-21 20:58
加注释的第一题,结果上楼已经传了
  1. class  ShuDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int m=0;//这是相加的数,一开始定义为0
  6.                 for(int i=1,j;i<=100;i++)//
  7.                 {
  8.                         int k=(int)Math.sqrt(i);//这里就是对i开方,结果取整后,赋给整型变量k.这个k在下面就是用来判断i的,如果k能够被i整除,那么就不是素数了
  9.                         for(j=2;j<=k;j++)//j为什么从2开始,是因为1就是素数的一个因数,而2不一定.
  10.                         {
  11.                                 if(i%j==0)//这个如果为真,就不是素数了
  12.                                 {
  13.                                     break;
  14.                              }
  15.                          }
  16.                          if(j>k)//这个步骤是根据上面来的,就是说如果j一直加到k都没有被i整除,那说明i就是素数了
  17.                         {
  18.                                 m=m+i;//求得的素数相加
  19.                         }
  20.                 }
  21.                 System.out.println(m);
  22.         }
  23. }
复制代码

作者: 风爽    时间: 2013-6-21 21:24
第三题:

  1. public class Test13 {

  2.         public static void main(String[] args)
  3.         {
  4.                 int a[][];
  5.                 a = new int[4][];        //创建二维数组
  6.                 for(int i = 1; i <= 4; i++)
  7.                         a[i - 1] = new int[i];
  8.                 for(int i = 0; i < 4; i++)
  9.                 {
  10.                         for(int j = 0; j <= i; j++)
  11.                         {
  12.                                 if(i == 0) //第一行元素全为1
  13.                                         a[0][0] = 1;
  14.                                 else if(j == 0 || i == j )//第一列和对角线上的元素全为1
  15.                                 {
  16.                                         a[i][j] = 1;
  17.                                 }
  18.                                 else // 其他元素为其上一行所对应元素和前一个元素的和
  19.                                         a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
  20.                         }
  21.                 }
  22.                
  23.                 //倒序打印杨辉三角
  24.                 for(int m = 3; m >= 0; m-- )
  25.                 {
  26.                         int p =  3 - m;
  27.                         while(p != 0)// 控制每行前的空格数
  28.                         {
  29.                                 System.out.print("\t");
  30.                                 p--;
  31.                         }
  32.                         for(int n = 0; n <= m; n++)//输出每行元素极其各元素之间的空格
  33.                         {
  34.                                 System.out.print(a[m][n]);
  35.                                 System.out.print("\t\t");
  36.                         }
  37.                         System.out.println();//换行
  38.                 }
  39.         }

  40. }
复制代码
结果:



版主三题全解出来了,前两个刚才提交了,有啥好处没??

作者: 风爽    时间: 2013-6-21 21:26
风爽 发表于 2013-6-21 20:44
第一题:结果是:1060;第二题:

怎么不对???能说明白点不??应该没错啊

作者: 风爽    时间: 2013-6-21 21:31
风爽 发表于 2013-6-21 21:26
怎么不对???能说明白点不??应该没错啊

那还没给加分呢??:(
作者: 陈鹏    时间: 2013-6-21 21:56
  1. class  ShuDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int m=0;//这是相加的数,一开始定义为0
  6.                 for(int i=2,j;i<=100;i++)//素数大于1
  7.                 {
  8.                         int k=(int)Math.sqrt(i);//这里就是对i开方,结果取整后,赋给整型变量k.这个k在下面就是用来判断i的,如果k能够被i整除,那么就不是素数了
  9.                         for(j=2;j<=k;j++)//j为什么从2开始,是因为1就是素数的一个因数,而2不一定.
  10.                         {
  11.                                 if(i%j==0)//这个如果为真,就不是素数了
  12.                                 {
  13.                                     break;
  14.                              }
  15.                          }
  16.                          if(j>k)//这个步骤是根据上面来的,就是说如果j一直加到k都没有被i整除,那说明i就是素数了
  17.                         {
  18.                                 m=m+i;//求得的素数相加
  19.                         }
  20.                 }
  21.                 System.out.println(m);
  22.         }
  23. }
复制代码
刚才忘了素数原来是大于1的,所以结果才为1061,正确结果为1060


1.PNG (23.5 KB, 下载次数: 0)

打印的结果

打印的结果

作者: oxf974025918    时间: 2013-6-21 22:32
oxf974025918 发表于 2013-6-21 20:35
package com.heima;

import java.util.Arrays;

没有排序前:[2, 5, 9, 10, 48, 95, 154, 31, 59, 69]
排序后:[2, 5, 9, 10, 31, 48, 59, 69, 95, 154]
数组中的素数全部赋值为零,排序后:[0, 0, 9, 10, 0, 48, 0, 69, 95, 154]

作者: oxf974025918    时间: 2013-6-21 22:33
oxf974025918 发表于 2013-6-21 20:23
package com.heima;

public class PrimeNum {

结果:1060
作者: oxf974025918    时间: 2013-6-21 22:47
oxf974025918 发表于 2013-6-21 22:32
没有排序前:[2, 5, 9, 10, 48, 95, 154, 31, 59, 69]
排序后:[2, 5, 9, 10, 31, 48, 59, 69, 95, 154]
...

package com.heima;

import java.util.Arrays;

public class ArrayDemo {

        /**
         * 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
            数组:  2   5    9    10   48     95   154     31  59    69

         * @author oxf
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int arr[]={2,5,9,10,48,95,154,31,59,69};
                System.out.println("没有排序前:"+Arrays.toString(arr));
                Arrays.sort(arr);                       
                System.out.println("排序后:"+Arrays.toString(arr));//数组排序
                for (int i = 0; i < arr.length; i++) {
                        if(isPrime(arr))                                //数组为质素设置为0
                                arr=0;       
                }
                System.out.println("数组中的素数全部赋值为零,排序后:"+Arrays.toString(arr));//
                for(int i=0;i<arr.length-1;i++){
                        for (int k = 0; k < i; k++) {
                                System.out.print(" ");
                        }
                        for(int j=i;j<=i;j++){
                                System.out.print(arr);
                        }
                        System.out.println();
                }
        }
        //判断是否是质素
        static boolean isPrime(int n){
                for(int i=2;i<n/2;i++)
                        if(n%i==0)
                                return false;
                return true;
        }

}
结果:
没有排序前:[2, 5, 9, 10, 48, 95, 154, 31, 59, 69]
排序后:[2, 5, 9, 10, 31, 48, 59, 69, 95, 154]
数组中的素数全部赋值为零,排序后:[0, 0, 9, 10, 0, 48, 0, 69, 95, 154]
0
0
  9
   10
    0
     48
      0
       69
        95

作者: oxf974025918    时间: 2013-6-21 22:49

package com.heima;

public class PrimeNum {

        /**
         * 打印输出一百以内的素数的累加和...  
         * @author 欧雄风
         */
        public static void main(String[] args) {
                PrimeNum num=new PrimeNum();
                num.printPrime(100);

        }
        //判断是否是质素
        boolean isPrime(int n){
                for(int i=2;i<=n/2;i++){
                        if(n%i==0){
                                return false;//能被整除则不是素数
                        }
                }
                return true;
        }
        //打印一个小于m的质素的和
        void printPrime(int m){
                int j=0;
                for(int i=2;i<=m;i++){
                        if(isPrime(i)){
                                j+=i;          //计算累加
                        }
                }
                System.out.println(j);//打印和
        }

}
结果:1060
作者: HM张博文    时间: 2013-6-21 22:49
  1. //1. 打印输出一百以内的素数的累加和...
  2. class Test3
  3. {
  4. public static void main(String[] args)
  5. {
  6. int sum=0;//定义sum为素数和并赋初值为0
  7. for(int i=2;i<=100;i++)
  8. if(isPrime(i))//如果是素数
  9. {
  10. sum+=i;//将素数加到和里面
  11. if(i!=97)//如果不是最后一个素数
  12. System.out.print(i+"+");//打印该素数后在后面加一个+
  13. else
  14. System.out.print(i+"=");//如果是最后一个素数,则后面打印一个=
  15. }
  16. System.out.println(sum);//最后打印他们的和

  17. }
  18. static boolean isPrime(int i)//定义一个判断素数的函数
  19. {
  20. for(int j=2;j<=Math.sqrt(i);j++)
  21. if(i%j==0)
  22. return false;
  23. return true;
  24. }
  25. }
  26. //最后运行结果是2+3+5+……+97=1060
复制代码

结果.jpg (12.45 KB, 下载次数: 0)

result

result

作者: 郑锐    时间: 2013-6-21 22:54
package test;
/*
* 思路:
*1需要对数组进行排序
*2,对数组中的元素进行素数判定,如果是素数则返回0,不是返回元素。
*3.先用嵌套for循环输出一个空格直角三角形,在每一行后面加上非素数即可。
*
*/


public class Test {

        /**
         * @param args
         */
        public static void main(String[] args) {
                int[] arr={2,5,9,10,48,95,154,31,59,69};
                //对数组进行选择排序
                arraySort(arr);
                //遍历数组
                for(int x=0;x<arr.length;x++){
                        System.out.print(arr[x]+" ");
                }
                System.out.println("");
                //按要求格式输出非素数
                select(arr);
        }
        //选择排序
        public static void arraySort(int [] arr){
                int temp;
                for(int i=0;i<arr.length;i++){
                        for(int j=i+1;j<arr.length;j++){
                                if(arr[i]>arr[j]){
                                        temp=arr[i];
                                        arr[i]=arr[j];
                                        arr[j]=temp;
                                }
                        }
                }
        }
        //输出一个空格直角三角形
        public static void select(int [] arr){
                for(int i=0;i<arr.length;i++){
                        for(int j=0;j<i;j++){                               
                                        System.out.print(" ");                                       
                        }
                        System.out.println(getNotSuShu(arr[i]));
                }                                
                       
        }
        //判断元素是不是素数
        public static int getNotSuShu(int arr){
                int y=0;
               
                int temp = (int) Math.sqrt(arr);                                             
                if (arr <= 3) {  
                        y=arr;  
                } else {  
                          for (int x = 2; x <= temp; x++) {
                                  if (arr % x == 0) {  
                                   return 0;  
                             }  
                                  if (x >= temp) {  
                                   y= arr;  
                                }  
                      }  
                        }               
                return y;
        }
}

输出结果.jpg (17.68 KB, 下载次数: 0)

输出结果.jpg

作者: tpsu88    时间: 2013-6-21 22:56
  1. /**
  2. * 打印输出一百以内的素数的累加和...
  3. */
  4. public class Sum {
  5.         public static void main (String args []) {
  6.                 int sum = 0;//初始化变量
  7.                 //循环1-100
  8.                 for (int i=1; i<=100; i+=2) {
  9.                         boolean f = true;
  10.                                 //判断每个数是不是素数
  11.                                 for (int j=2; j<i; j++) {
  12.                                         if (i%j ==0) {
  13.                                                 f = false;
  14.                                                 break;
  15.                                                 }
  16.                                         }
  17.                                 if (!f) {continue;}
  18.                                 sum += i;//累加
  19.                                
  20.                         System.out.print(" " + i);
  21.                         }
  22.                         System.out.println();
  23.                         System.out.println("Sum= "+sum);
  24.                
  25.                
  26.                 }       
  27.        
  28.        
  29. }
复制代码

1.jpg (14.3 KB, 下载次数: 0)

1.jpg

作者: 李九一    时间: 2013-6-21 22:56
题1
  1. package com.itheima;
  2. public class test1 {
  3.         public static boolean IsPrime (int m)
  4.         {
  5.          int i;
  6.          if (m == 2) return true;
  7.          if (m == 1 || m % 2 == 0) return false;
  8.          for (i = 3; i * i <= m;)
  9.          {
  10.           if (m % i == 0) return false;
  11.           i += 2;
  12.          }
  13.          return true;
  14.         }
  15.         public static void main(String[] args) {
  16.                 int n,sum,i;
  17.                  n=100;  //上限是100
  18.                 sum =0;
  19.                 for(i=2;i<n;i++)   //从2到100依次循环判断
  20.                 {
  21.                     if(IsPrime(i)) //如果是素数
  22.                         sum += i;   //累加和
  23.                 }
  24.                 System.out.println("sum="+sum);   //输出累加和
  25.         }
  26. }
复制代码

无标题.png (51.04 KB, 下载次数: 0)

无标题.png

作者: .netNo1    时间: 2013-6-21 22:58
  1. int a, b;
  2.             int  sum =0;  //用来存储素数和
  3.             for (a = 2; a <= 100; a++)  //从2到100一次循环判断(1不是素数)
  4.             {
  5.                 for (b = 2; b <= a - 1; b++)//2到该数如果没有可以被该数整除的则为素数
  6.                 {
  7.                     if (a % b == 0)  //求余为0表示可以被整出,则跳出
  8.                         break;
  9.                 }
  10.                 if (a == b)  //没有可以被整除的,为素数
  11.                 {
  12.                     sum +=a;  //求和
  13.                 }
  14.             }
  15.             Console.Write(sum);  
  16.             Console.ReadKey();
  17.            //结果:1060(图片不会搞)
复制代码

作者: tpsu88    时间: 2013-6-21 22:59
最小的素数是2,也是唯一的偶质数
  1. /**
  2. *题目:1.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  3. * 数组:  2   5    9    10   48     95   154     31  59    69
  4. */
  5. //排序
  6. class Sort {
  7.                 public void chooseSort(int[] arr) {
  8.                 //外循环选第一个挨个比,然后选第二个挨个比。-1是最后一个不用比。
  9.                 for(int i=0;i<arr.length-1; i++) {
  10.                         //内循环拿外循环第一个跟后面的挨个比,i+1是不用第0角标跟第0角标比。
  11.                         for(int j=i+1; j<arr.length; j++) {
  12.                                 if(arr[i]>arr[j]) {
  13.                                         int temp = arr[i];//定义一个变量temp临时存储
  14.                                         arr[i] = arr[j];
  15.                                         arr[j] = temp;
  16.                                 }
  17.                         }
  18.                 }
  19.         }
  20. }
  21. //素数
  22. class ZhiShu {
  23.         public void zhiShu(int[] arr) {
  24.                 new PrintArr().printArray(arr);//排序后的数组,打印一遍
  25.                         for(int i=0; i<arr.length-1;i++) {
  26.                                 boolean f = true;
  27.                                 for(int j=2; j<arr[i]; j++) {
  28.                                         if(arr[i]%j==0) {       
  29.                                                 f = false;
  30.                                                 break;
  31.                                         }
  32.                                 }
  33.                                         if(!f) { continue;}       
  34.                                         arr[i] = 0;
  35.                                
  36.                         }
  37.         }
  38. }
  39. //打印数组
  40. class PrintArr {
  41. public void printArray(int[] arr) {
  42.                
  43.                 System.out.print("[");
  44.                 //i是从0角标开始
  45.                 for(int i=0; i<arr.length; i++) {
  46.                        
  47.                         //length-1是不最后一个不打印,
  48.                         if(i!=arr.length-1) {
  49.                                 System.out.print(arr[i] + ", ");
  50.                         }
  51.                         else {
  52.                                 System.out.println(arr[i] + "]");
  53.                         }
  54.                 }
  55.         }
  56. }
  57. //阶梯输出
  58. class LouTi {
  59.         public void louTi(int[] arr) {
  60.                 //定义行数
  61.                 for(int i=0; i<arr.length; i++) {
  62.                         //i和x都是每次递增1
  63.                         for(int j=0; j<=i; j++) {
  64.                                 System.out.print(" ");               
  65.                         }
  66.                         System.out.print(arr[i]);
  67.                         System.out.println();
  68.                 }
  69.         }       
  70. }
  71. class JieTi{
  72.         public static void main(String[] args) {
  73.                 int[] arr = {2,5,9,10,48,95,154,31,59,69};
  74.                
  75.                 new Sort().chooseSort(arr);
  76.                 new ZhiShu().zhiShu(arr);
  77.                 new PrintArr().printArray(arr);
  78.                 new LouTi().louTi(arr);
  79.         }
  80. }
复制代码

2.jpg (14.56 KB, 下载次数: 0)

2.jpg

作者: 杨兴庭    时间: 2013-6-21 23:38
看看。。
作者: oxf974025918    时间: 2013-6-21 23:51
package com.heima;

public class PrimeNum {

        /**
         * 打印输出一百以内的素数的累加和...  
         * @author 欧雄风
         */
        public static void main(String[] args) {
                PrimeNum num=new PrimeNum();
                num.printPrime(100);

        }
        //判断是否是质素
        boolean isPrime(int n){
                for(int i=2;i<=n/2;i++){
                        if(n%i==0){
                                return false;//能被整除则不是素数
                        }
                }
                return true;
        }
        //打印一个小于m的质素的和
        void printPrime(int m){
                int j=0;
                for(int i=2;i<=m;i++){
                        if(isPrime(i)){
                                j+=i;          //计算累加
                        }
                }
                System.out.println(j);//打印和
        }

}
结果:1060
作者: 小冰块    时间: 2013-6-21 23:51
  1. /*
  2. 需求:打印输出一百以内的素数的累加和...
  3. */

  4. class Sushu
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 int sum= 0;//定义累加器

  9.                 for (int i = 2;i <= 100 ;i++ )//一百以内循环判断
  10.                 {
  11.                         if (isSuShu(i))//如果是素数,则累加到累加器中
  12.                         {
  13.                                 sum = sum+i;
  14.                         }
  15.                 }

  16.                
  17.                 System.out.println(sum);
  18.         }

  19.         //判断是否为素数
  20.         public static boolean isSuShu(int x)
  21.         {
  22.                
  23.                 for (int k = 2 ; k<x ; k++ )
  24.                 {
  25.                         if ((x % k)==0)
  26.                         {
  27.                                 return false;
  28.                         }
  29.                 }
  30.                 return true;
  31.                
  32.         }
  33. }
复制代码
  1. /*

  2. 第二题:将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  3.   数组:  2   5    9    10   48     95   154     31  59    69

  4. */

  5. class Sort
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 int arr[] = {2,5,9,10,48,95,154,31,59,69};//定义数组

  10.                 sop("排序前的数组是:");

  11.                 sop(arr);//输出数组

  12.                 sort(arr);//调用排序算法

  13.                 sop("排序后的数组是:");

  14.                 sop(arr);//输出数组

  15.                 sop("素数全部赋值为0后的数组是:");

  16.                 for (int i = 0;i<arr.length ;i++ )//将所有素数元素赋值为零
  17.                 {
  18.                         if (isSuShu(arr[i]))
  19.                         {
  20.                                 arr[i]=0;
  21.                         }
  22.                 }

  23.                 sop(arr);

  24.                 sop("排成阶梯型后的数组为:");

  25.                 jieTi(arr);//调用阶梯型算法并输出



  26.         }

  27.         //数组排序
  28.         public static void sort(int[] arr)
  29.         {
  30.                 for (int j=0 ; j<arr.length-1 ; j++ )
  31.                 {
  32.                         for (int i = 0 ;i<arr.length-1-j ;i++ )
  33.                         {
  34.                                 if (arr[i]>arr[i+1])
  35.                                 {
  36.                                         int temp = arr[i];
  37.                                         arr[i] = arr[i+1];
  38.                                         arr[i+1] = temp;
  39.                                 }
  40.                         }
  41.                        
  42.                 }
  43.         }
  44.        
  45.        
  46.         //判断是否为素数
  47.         public static boolean isSuShu(int x)
  48.         {
  49.                
  50.                 for (int k = 2 ; k<x ; k++ )
  51.                 {
  52.                         if ((x % k)==0)
  53.                         {
  54.                                 return false;
  55.                         }
  56.                 }
  57.                 return true;
  58.                
  59.         }

  60.         //数组排成阶梯型后:
  61.         public static void jieTi(int[] arr)
  62.         {
  63.                 for (int i = 0;i<arr.length ;i++ )
  64.                 {
  65.                         for (int j = 0;j<=i ;j++ )
  66.                         {
  67.                                 System.out.print(" ");
  68.                         }
  69.                         sop(arr[i]);
  70.                 }
  71.         }

  72.         //输出数组
  73.         public static void sop(int[] arr)
  74.         {
  75.                 for (int i = 0;i<arr.length ;i++ )
  76.                 {
  77.                         System.out.print(arr[i]+" ");
  78.                 }
  79.                 System.out.println();
  80.         }

  81.         //重载输出语句
  82.         public static void sop(Object obj)
  83.         {
  84.                 System.out.println(obj);
  85.         }
  86. }
复制代码
  1. /*
  2. 第三题需求:手动输入一个自然数N,反向打印N行杨辉三角
  3. */

  4. class  YangHui
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 int x=5;
  9.                 int[][] a = new int[x][x];


  10.                 for(int i=0;i<x;i++)//先赋值边际元素为1
  11.                         {
  12.                                 a[i][0]=1;a[i][i]=1;
  13.                         }

  14.                 for(int i=2;i<x;i++)//填满整个杨辉三角
  15.                 {
  16.                         for(int j=1;j<i;j++)
  17.                         a[i][j]=a[i-1][j]+a[i-1][j-1];
  18.                 }
  19.                
  20.                 for (int i = x-1;i>=0 ;i-- )//倒着打印
  21.                 {
  22.                         for (int k = 0;k<x-i ;k++ )
  23.                         {
  24.                                 System.out.print("  ");//控制空格的数量
  25.                         }

  26.                         for (int j=0;j<=i ;j++ )
  27.                         {
  28.                                 System.out.print("    "+a[i][j]);
  29.                         }
  30.                         System.out.println();
  31.                 }
  32.         }
  33. }
复制代码


作者: oxf974025918    时间: 2013-6-21 23:52
package com.heima;

import java.util.Arrays;

public class ArrayDemo {

        /**
         * 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
            数组:  2   5    9    10   48     95   154     31  59    69

         * @author oxf
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int arr[]={2,5,9,10,48,95,154,31,59,69};
                System.out.println("没有排序前:"+Arrays.toString(arr));
                Arrays.sort(arr);                       
                System.out.println("排序后:"+Arrays.toString(arr));//数组排序
                for (int i = 0; i < arr.length; i++) {
                        if(isPrime(arr[i]))                                //数组为质素设置为0
                                arr[i]=0;       
                }
                System.out.println("数组中的素数全部赋值为零,排序后:"+Arrays.toString(arr));//
                for(int i=0;i<arr.length-1;i++){
                        for (int k = 0; k < i; k++) {
                                System.out.print(" ");
                        }
                        for(int j=i;j<=i;j++){
                                System.out.print(arr[i]);
                        }
                        System.out.println();
                }
        }
        //判断是否是质素
        static boolean isPrime(int n){
                for(int i=2;i<n/2;i++)
                        if(n%i==0)
                                return false;
                return true;
        }

}
结果:
没有排序前:[2, 5, 9, 10, 48, 95, 154, 31, 59, 69]
排序后:[2, 5, 9, 10, 31, 48, 59, 69, 95, 154]
数组中的素数全部赋值为零,排序后:[0, 0, 9, 10, 0, 48, 0, 69, 95, 154]
0
0
  9
   10
    0
     48
      0
       69
        95

作者: oxf974025918    时间: 2013-6-22 00:24
package com.heima;

public class PrintDemo {

        /**
         *  3.手动输入一个自然数N,反向打印N行杨辉三角。

         * @author oxf
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                 getPri(4);
        }
        public static void getPri(int n){
                int[][]a=new int[n][n];
                int i=0,j=0;
                for (i = 0; i < n; i++) {
                        a[i][i]=1;                                //使对角线为1
                        a[i][0]=1;                                //使第一列为1
                }
                for(i=1;i<n;i++){
                        for (j = 1;  j<= i-1; j++) {
                                a[i][j]=a[i-1][j-1]+a[i-1][j];        //上一行中同列和前一列两个数之和
                               
                        }
                       
                }
                int b=n;
                for (i = n-1;  i>=0; i--) {
                        for(int k=0;k<=n-i;k++){
                                System.out.print(" ");
                        }
                        for(j=i;j>=0;j--){
                               
                                System.out.print(a[i][j]+"\t");
                        }
                        System.out.println();
                }
        }

}
结果:
  1        3        3        1       
   1        2        1       
    1        1       
     1       

作者: 李九一    时间: 2013-6-22 00:28
题2
  1. package com.itheima;

  2. import java.util.Arrays;

  3. public class test2 {
  4.         public static boolean IsPrime (int m)
  5.         {
  6.          int i;
  7.          if (m == 2) return true;
  8.          if (m == 1 || m % 2 == 0) return false;
  9.          for (i = 3; i * i <= m;)
  10.          {
  11.           if (m % i == 0) return false;
  12.           i += 2;
  13.          }
  14.          return true;
  15.         }
  16.         public static void main(String[] args) {
  17.                 int []num={2,5,9,10,48,95,154,31,59,69};
  18.                 int i,j,k;
  19.                  Arrays.sort(num);//把数组元素从打到小排序
  20.                 for(i=0;i<num.length;i++){
  21.                         System.out.print(num[i]+" ");
  22.                 }
  23.                 System.out.println("\n"+"=========================");
  24.                 for(i=0;i<num.length;i++)
  25.                         {
  26.                         if(IsPrime(num[i])){
  27.                                 num[i]=0;//数组中的素数全部赋值为零
  28.                         }System.out.print(num[i]+" ");
  29.                 }        System.out.println("\n"+"=========================");
  30.                 for(i=0;i<num.length;i++){
  31.                         System.out.print("\n");
  32.                         for(j=0;j<i;j++)
  33.                                 System.out.print(" ");
  34.                                          System.out.print(num[j]);
  35.                           
  36.                 }
  37.         }

  38. }
复制代码

无标题.png (104.05 KB, 下载次数: 0)

无标题.png

作者: 杨兴庭    时间: 2013-6-22 00:56
[/code]晚上睡不着,逛逛论坛挣挣技术分,小健版主别忘了加分哦



[code]package reg;

public class demo {

        /**
         * 1. 打印输出一百以内的素数的累加和...
         * 解题思路:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。   
         */
        public static void main(String[] args) {

                boolean flg;    //定义布尔值变量作判断条件
                int sum = 0;    //求和变量
               
                for (int i = 2; i < 100; i++) {      //循环2-100以内的数,素数从2开始
                        flg = true;
                        for (int j = 2; j <= Math.sqrt(i); j++) {   
                                if (i % j == 0 && j < Math.sqrt(i)) {      //判断i是否能被2到i的平方根之间的数整除
                                        flg = false;
                                        break;                          //如果能被整除不是素数给flg赋false
                                }
                        }
                        if (flg) {
                                System.out.println(i);        //判断并求和
                                sum = sum + i;
                        }
                }
                System.out.print("100以内素数的和是:"+sum);  //打印结果

        }

}



作者: pys200603027    时间: 2013-6-22 01:25
题1
  1. public class test2 {
  2.                 public static void main(String[] args) {
  3.                         int i, j;
  4.                         int sum=0;//用于计算素数的总和
  5.                         // 素数即质数,除1和本身能整除以外,不能被其他数整除
  6.                         // 判断一个数n为素数,去用2-n-1整除,如果有能整除,说明这个数不是素数
  7.                         // 双重循环
  8.                         for (i = 2; i <= 100; i++) {
  9.                                 // 判断i是否为素数
  10.                                 for (j = 2; j < i; j++) // 循环j=2--i-1
  11.                                 {
  12.                                         if (i % j == 0) {
  13.                                                 break; // 跳出循环
  14.                                         }
  15.                                 }
  16.                                 if (j >= i) // 该数是素数
  17.                                 {
  18.                                         sum+=i;//累加素数                       
  19.                                 }
  20.                         }
  21.                         System.out.println(sum);//打印最终结果
  22.                 }
  23.         }
复制代码
题1结果:
题2
  1. import java.util.Arrays;
  2. public class test3 {
  3.        
  4.         public static void main(String[] args){
  5.                
  6.                 int arrayTemp[]={2,5,9,10,48,95,154,31,59,69};//声明一个数组用于保存待处理的数据
  7.                
  8.                 BubbleSort(arrayTemp);//冒泡算法排序
  9.                 //Arrays.sort(arrayTemp);调用排序方法
  10.                 System.out.println(Arrays.toString(arrayTemp));//打印排序之后的数组
  11.                 isPrime(arrayTemp);//素数判断并且将素数改为0
  12.                 System.out.println(Arrays.toString(arrayTemp));//打印更改之后的数组
  13.                 printArray(arrayTemp);//阶梯打印数组
  14.                
  15.                 /*
  16.                 for(int n=0;n<arrayTemp.length;n++){
  17.                         System.out.print(arrayTemp[n]+",");
  18.                 }
  19.                 */
  20.         }
  21.         /**
  22.          * 将数组进行阶梯状打印
  23.          * @param arrayTemp 待输出的数组
  24.          */
  25.         static void printArray(int[] arrayTemp){
  26.                 for(int i=0;i<arrayTemp.length;i++){
  27.                         for(int j=0;j<i;j++){
  28.                                 System.out.print("    ");//打印空格
  29.                         }
  30.                         System.out.println(arrayTemp[i]);//打印数组中的值
  31.                 }
  32.         }
  33.         /**
  34.          * 判定是否是素数,如果是素数即变成0
  35.          * @param arrayTemp 待判定的数组
  36.          */
  37.         static void isPrime(int[] arrayTemp){
  38.                 int i,j;
  39.                 for(i=0;i<arrayTemp.length;i++){
  40.                         for(j=2;j<arrayTemp[i];j++){
  41.                                 if(arrayTemp[i]%j==0)//判定是否是素数
  42.                                         break;//跳出循环
  43.                         }
  44.                         if(j>=arrayTemp[i]){// 该数是素数
  45.                                 arrayTemp[i]=0;
  46.                         }
  47.                        
  48.                 }
  49.         }
  50.         /**
  51.          * 冒泡排序
  52.          * @param arrayTemp 待排序的数组
  53.          */
  54.         static void BubbleSort(int[] arrayTemp){
  55.                
  56.                 for(int i=0;i<arrayTemp.length-1;i++){
  57.                         for(int j=0;j<arrayTemp.length-i-1;j++){
  58.                                 if(arrayTemp[j]>arrayTemp[j+1]){
  59.                                         int temp=0;
  60.                                         temp=arrayTemp[j];
  61.                                         arrayTemp[j]=arrayTemp[j+1];
  62.                                         arrayTemp[j+1]=temp;
  63.                                 }
  64.                         }
  65.                 }
  66.         }

  67. }
复制代码
题2结果:


题3
  1. import java.util.Scanner;


  2. public class test4 {
  3.         public static void main(String[] args){
  4.                
  5.                
  6.                 System.out.println("please enter a number:");
  7.                 Scanner in=new Scanner(System.in);//用于输入一个数值N
  8.                 int conutYH=in.nextInt();
  9.                
  10.                  int[][] array=YH(conutYH);//计算杨辉三角
  11.                  
  12.                  //开始打印杨辉三角
  13.                  for(int i=array.length-1;i>-1;i--){
  14.                          for(int n=array.length-1;n>i;n--)
  15.                                  System.out.print("  ");//控制打印空格
  16.                          for(int j=0;j<array[i].length;j++){
  17.                                  System.out.print(array[i][j]+"  ");//打印输出数值
  18.                          }
  19.                                  
  20.                          System.out.println();//换行
  21.                  }
  22.                  
  23.         }
  24.         /**
  25.          *
  26.          * @param num 杨辉三角的行数
  27.          * @return 返回保存着杨辉三角的数组
  28.          */
  29.         public static int[][] YH(int num){  
  30.         int[][] array=new int[num][];//建立一个二维数组用于保存数值  
  31.         for(int i=0;i<array.length;i++){  
  32.             array[i]=new int[i+1]; //动态生成二维数组的子数组,可以节省内存空间
  33.             for (int j = 0; j < array[i].length; j++) {  
  34.                 if(j==0||j==i){  
  35.                     array[i][j]=1; //杨辉三角的外边都是1
  36.                 }else{
  37.                          //第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m)
  38.                     array[i][j]=array[i-1][j-1]+array[i-1][j];
  39.                 }  
  40.             }  
  41.         }
  42.         return array;//返回保存的数组
  43.     }  

  44. }
复制代码
题3结果:


作者: 万琪    时间: 2013-6-22 01:42
  1. package heima;

  2. import java.util.Arrays;
  3. import java.util.Scanner;

  4. public class Test01 {

  5.         public static void main(String[] args) {
  6.                 Test01 ts = new Test01();
  7.                 System.out.println("第一题:");
  8.                 ts.sushu100();
  9.                 System.out.println("\n\n第二题:");
  10.                 ts.arr();
  11.                 System.out.println("\n\n第三题:");
  12.                 ts.yagnhui();
  13.         }

  14.         // 素数判断方法
  15.         boolean isSuShu(int num) {
  16.                 for (int i = 2; i < num; i++) {
  17.                         if (num % i == 0) {
  18.                                 return false;
  19.                         }
  20.                 }
  21.                 return true;
  22.         }

  23.         // 第一题
  24.         // 1-100中的素数
  25.         void sushu100() {
  26.                 System.out.println("1-100中的素数:");
  27.                 // 1不是素数也不是和数
  28.                 for (int i = 2; i <= 100; i++) {
  29.                         if (isSuShu(i))
  30.                                 System.out.print(i + ",");
  31.                 }
  32.         }

  33.         // 第二题
  34.         void arr() {
  35.                 // 原数组
  36.                 int arr[] = { 2, 5, 9, 10, 48, 95, 154, 31, 59, 69 };

  37.                 Arrays.sort(arr);
  38.                 for (int i = 0, z = 0; i < 4; i++) {
  39.                         for (int j = 0; j <= i; j++, z++) {
  40.                                 // 替换素数
  41.                                 if (isSuShu(arr[z]))
  42.                                         arr[z] = 0;
  43.                                 System.out.print(arr[z] + " ");
  44.                         }
  45.                         System.out.println();
  46.                 }

  47.         }

  48.         // 第三题
  49.         void yagnhui() {
  50.                 // 输入行数
  51.                 // Scanner input = new Scanner(System.in);
  52.                 System.out.println("请输入行数:");
  53.                 // int n = input.nextInt();
  54.                 int n = 10;
  55.                 int mat[][] = new int[n + 1][];
  56.                 int i, j;
  57.                 // 给二维赋值
  58.                 for (i = 0; i < n + 1; i++) {
  59.                         mat[i] = new int[i + 1];
  60.                         mat[i][i] = 1;

  61.                         for (j = 1; j < i; j++) {
  62.                                 mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];
  63.                         }
  64.                 }
  65.                 // 打印了
  66.                 for (i = mat.length - 1; i >= 0; i--) {
  67.                         for (int j2 = 0; j2 <mat.length-i; j2++) {
  68.                                 System.out.print(" ");
  69.                         }
  70.                         for (j = mat[i].length - 1; j > 0; j--)
  71.                                 System.out.print(" " + mat[i][j]);
  72.                         System.out.println();
  73.                 }
  74.         }
  75. }
复制代码
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
结果是:

第一题:
1-100中的素数:
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,

第二题:
0
0 9
10 0 48
0 69 95 154


第三题:
请输入行数:
  1 9 36 84 126 126 84 36 9 1
      1 8 28 56 70 56 28 8 1
        1 7 21 35 35 21 7 1
          1 6 15 20 15 6 1
           1 5 10 10 5 1
             1 4 6 4 1
               1 3 3 1
                1 2 1
                 1 1
                  1
           




作者: 杨增坤    时间: 2013-6-22 08:25
public class text {
        public static void main(String[] args) {
                System.out.println("100以内的素数和:"+sum(100));
                int s[]={2,5,9,10,48,95,154,31,59,69};       
                sort(s);
                System.out.print("数组改变前:");
                show(s);
                System.out.println();
                System.out.print("数组改变后:");
                update(s);
                show(s);
                System.out.println();
                showJie(s);
        }
        /**
         * 求1~n之间的素数和
         */
        public static int sum(int n){
                int sum=0;
                int i=1;
                for(i=2;i<n;i++){
                        if(IsPrime(i)==true){
                                sum+=i;
                        }
                }
               
                return sum;
        }
        /**
         * 判断一个数是否是素数
         */
        public static boolean IsPrime(int n){
                int i=0;
                for(i=2;i<n;i++){
                        if(n%i==0)
                                break;
                }
                if(i==n){
                        return true;
                }else{
                        return false;
                }
        }
        /**
         * 数组输出
         */
    public static void show(int s[]){
            for(int i=0;i<s.length;i++){
                    System.out.print(s[i]+"  ");
            }
    }
    /**
     * 数组排序
     */
    public static void sort(int s[]){
            int i=0,j=0;
            for(i=0;i<s.length-1;i++){
                    for(j=0;j<s.length-1-i;j++){
                            if(s[j]>s[j+1]){
                                    int t=0;
                                    t=s[j];
                                    s[j]=s[j+1];
                                    s[j+1]=t;
                            }
                    }
            }                 
    }
    /**
     * 置换数组中的元素
     */
    public static void update(int s[]){
            for(int i=0;i<s.length;i++){
                    if(IsPrime(s[i])==true){
                            s[i]=0;
                    }
            }
    }
    /**
     * 阶梯输出数组元素
     */
    public static void showJie(int s[]){
            for(int i=0;i<s.length;i++){
                    for(int j=0;j<i;j++){
                            System.out.print(" ");
                    }
                    System.out.println(s[i]);
            }
    }
}
结果:


aa.png (6.26 KB, 下载次数: 0)

aa.png

作者: vicoooo    时间: 2013-6-22 08:31
1.  打印输出一百以内的素数的累加和
  1. public class PrimeNumber{
  2.         public static void main (String []args) {
  3.                 //素数:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
  4.                 int j;
  5.                 int sum = 0;
  6.                 for(int n=1;n<=100;n++) {
  7.                         for(j=2;j<=n-1;j++) {
  8.                                 if(n%j==0)
  9.                                         break;
  10.                         }
  11.                         if(j>=n-1&&n>1) {
  12.                                 //System.out.print(n+",");
  13.                                 sum += n;
  14.                         }                       
  15.                 }
  16.                 System.out.println("sum="+sum);       
  17.         }

  18. }
复制代码
输出结果:

2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
    数组:  2   5    9    10   48     95   154     31  59    69
  1. public class PrimeArray {

  2.         public static void main(String args[]){
  3.                 int[] arr1 = {2,5,9,10,11,48,95,154,31,59,69};
  4.                 System.out.println("排序前:");
  5.                 printArr(arr1);
  6.                 int[] arr2 = arrSort(arr1);
  7.                 System.out.println("排序后:");
  8.                 printArr(arr2);
  9.                 int[] arr3 = primeArr(arr2);
  10.                 System.out.println("数组改变后:");
  11.                 printArr(arr3);
  12.                 System.out.println("阶梯输出:");
  13.                 ladPrint(arr3);
  14.         }
  15.         /**
  16.          * 使用冒泡排序对数组进行排序
  17.          * @param arr
  18.          * @return
  19.          */
  20.         public static int[] arrSort(int[] arr){
  21.                 for(int i=0;i<arr.length;i++){
  22.                         for(int j=0;j<arr.length-i-1;j++){
  23.                                 if(arr[j]>arr[j+1]){
  24.                                         int temp = arr[j];
  25.                                         arr[j]=arr[j+1];
  26.                                         arr[j+1]=temp;
  27.                                 }
  28.                         }
  29.                 }
  30.                 return arr;
  31.         }
  32.         /**
  33.          * 打印输出数组
  34.          * @param arr
  35.          */
  36.         public static void printArr(int[] arr){
  37.                 for(int i=0;i<arr.length;i++){
  38.                         System.out.print(arr[i]+" ");
  39.                 }
  40.                 System.out.println();
  41.         }
  42.         /**
  43.          * 判断数组中是否存在素数,并替换为0
  44.          * @param arr
  45.          * @return
  46.          */
  47.         public static int[] primeArr(int[] arr){
  48.                 int j;
  49.                 System.out.println("数组中存在的素数:");
  50.                 for(int i=0;i<arr.length;i++){
  51.                         //除以比自身小的数,如果没有余数,则表示能被其他数整除,不是素数
  52.                         for(j=2;j<=arr[i];j++) {
  53.                                 if(arr[i]%j==0)
  54.                                         break;
  55.                         }
  56.                         if(j>=arr[i]-1&&arr[i]>1) {
  57.                                 System.out.print(arr[i]+" ");
  58.                                 arr[i]=0;
  59.                         }
  60.                 }
  61.                 System.out.println();
  62.                 return arr;
  63.         }
  64.         /**
  65.          * 阶梯输出
  66.          * @param arr
  67.          */
  68.         public static void ladPrint(int[] arr){
  69.                 for(int i=0;i<arr.length;i++){
  70.                         for(int j=0;j<i;j++){
  71.                                 System.out.print(" ");
  72.                         }
  73.                         System.out.println(arr[i]);
  74.                 }
  75.         }
  76. }
复制代码
输出结果为:

3.手动输入一个自然数N,反向打印N行杨辉三角。
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;

  4. public class Triangle {

  5.         public static void main(String args[]) throws IOException{
  6.                 int a;
  7.                 System.out.print("请输入一个整数:");
  8.                 BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
  9.                 a=Integer.parseInt(strin.readLine());
  10.                 System.out.println("输入的数是:"+a);
  11.                 calculate(a);
  12.         }
  13.         public static void calculate(int n){
  14.         //倒置杨辉三角
  15.                 for(int i=n;i>=1;i--){
  16.             for(int j=1;j<=n-i;j++){
  17.                 System.out.print(" ");
  18.             }
  19.             //打印空格后面的字符,从第1列开始往后打印
  20.             for(int j=1;j<=i;j++){
  21.                 System.out.print(num(i,j) +" ");
  22.             }
  23.             System.out.println();
  24.         }
  25.     }
  26.     public static int num(int x,int y){//第x行,第y列
  27.         if(y==1||y==x){
  28.             return 1;
  29.         }
  30.         //每一行的数字(除了第一列和最后一列)都是上一行两个数字之和
  31.         int c = num(x-1,y-1)+num(x-1,y);
  32.         return c;
  33.     }
  34. }
复制代码
结果为:

2013-06-22_082813.jpg (4.13 KB, 下载次数: 0)

2013-06-22_082813.jpg

2013-06-22_082940.jpg (29.54 KB, 下载次数: 0)

2013-06-22_082940.jpg

2013-06-22_083113.jpg (28.52 KB, 下载次数: 0)

2013-06-22_083113.jpg

作者: tpsu88    时间: 2013-6-22 09:03
这次结果对了吧!我数学常识有待提高啊!呵呵,居然把1也当素数!!
  1. /**
  2. * 打印输出一百以内的素数的累加和...
  3. */
  4. public class Sum {
  5.         public static void main (String args []) {
  6.                 int sum = 0;//初始化变量
  7.                 //循环1-100
  8.                 for (int i=1; i<=100; i++) {
  9.                         boolean f = true;
  10.                                 //判断每个数是不是素数
  11.                         if(i!=1) {       
  12.                                 for (int j=2; j<i; j++) {
  13.                                         if (i%j ==0) {
  14.                                                 f = false;
  15.                                                 break;
  16.                                                 }
  17.                                         }
  18.                                 if (!f) {continue;}
  19.                                 sum += i;//累加
  20.                                
  21.                         System.out.print(" " + i);
  22.                         }}
  23.                         System.out.println();
  24.                         System.out.println("Sum= "+sum);
  25.                
  26.                
  27.                 }       
  28.        
  29.        
  30. }
复制代码

1.jpg (9.82 KB, 下载次数: 0)

1.jpg

作者: yooc    时间: 2013-6-22 09:14
  1. /*
  2. ********************
  3. 项目名:黑马版主题解
  4. 作者:yooc

  5. 满分13分吗?我来冲刺满分:)  早上6点开始除去吃饭时间用时2小时40分钟

  6. 本代码可直接复制执行  方便版主检测!

  7. ********************
  8. */

  9. import java.util.*;

  10. class  HeimaTest
  11. {

  12.         //主函数
  13.         public static void main(String[] args)
  14.         {
  15.                 sop("***********题目1**********");
  16.                 timu1();        //执行题目1
  17.                 sop("***********题目2**********");
  18.                 timu2();        //执行题目2
  19.                 sop("***********题目3**********");
  20.                 timu3();        //执行题目3

  21.         }

  22.         //功能函数 打印到控制台
  23.         public static void sop(Object obj)  
  24.         {
  25.                 System.out.println(obj);
  26.         }

  27.         //********题目1 求素数********
  28.         public static void timu1()         
  29.         {
  30.                 int N = 100;                         //范围
  31.                 int i, j,temp=0;
  32.                 sop("100以内的素数有:");
  33.                 for (i = 2; i <= 100; i++)   //求素数开始
  34.                 {
  35.                         for (j = 2; j < i; j++)   
  36.                         if (i % j== 0)         //不满足素数条件直接跳出内循环
  37.                                 break;

  38.                         if(j==i)          //内循环没有中途跳出 则找到素数一枚
  39.                         {
  40.                                 System.out.print(i+" "); //输出单个素数
  41.                                 temp+=i;     //记录累加和
  42.                         }

  43.                 }
  44.                 sop("\n累加和为:"+temp);  //输出结果
  45.         }
  46.         //********题目1结束********



  47.         /*
  48.         ********题目2********
  49.         将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  50.         数组:  2   5    9    10   48     95   154     31  59    69
  51.         */
  52.         public static void timu2()  
  53.         {
  54.                 int i,j;
  55.                 int[] a = {2,5,9,10,48,95,154,31,59,69};
  56.                 Arrays.sort(a);      //将数组排序

  57.                 sop("数组排序后:");
  58.                 sop(Arrays.toString(a));

  59.                 for (i=0;i<a.length;i++)
  60.                 {
  61.                         for (j = 2; j < a[i]; j++)  //判断数组a中有无素数
  62.                         if (i % j== 0)         //不满足素数条件直接跳出内循环
  63.                                 break;

  64.                         if(j==a[i])          //内循环没有中途跳出 则找到素数一枚
  65.                         {
  66.                                 a[i]=0;        //将其置0
  67.                         }
  68.                        
  69.                 }
  70.                 sop("数组改变后:");
  71.                 sop(Arrays.toString(a));

  72.                 //按题目要求将其输出
  73.                 for (int m=0;m<a.length ;m++ )
  74.                 {
  75.                         for (int n=0;n<m ;n++ )
  76.                         {
  77.                                 System.out.print(" ");
  78.                         }
  79.                         sop(a[m]);
  80.                 }

  81.         }
  82.         //******题目2结束********


  83.         /*
  84.         ********题目3********
  85.         手动输入一个自然数N,反向打印N行杨辉三角。       
  86.         */       
  87.         public static void timu3()
  88.         {
  89.                 StringBuilder sb = new StringBuilder();  //创建字符串缓冲 以字符为单位存入数据
  90.                 List<String> al = new ArrayList<String>();               //创建list集合 以行为单位存入数据  (反转用)

  91.                 try
  92.                 {
  93.                         //手动输入一个自然数N,反向打印N行杨辉三角。       
  94.                         Scanner ss=new Scanner(System.in);
  95.                         System.out.print("请输入一个数(建议不大于10):");
  96.                         int n=(int)ss.nextInt()+1;
  97.                        
  98.                         //根据 mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j] 计算杨辉三角         
  99.                         int mat[][] = new int[n][];
  100.                         int i, j;
  101.                         for (i = 0; i < n; i++)
  102.                         {
  103.                                 mat[i] = new int[i + 1];
  104.                                 mat[i][i] = 1;        //最右边全为1
  105.                                 for (j = 1; j < i; j++)
  106.                                 {
  107.                                         mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];
  108.                                 }

  109.                         }
  110.                         for (i = 0; i < mat.length; i++)
  111.                         {
  112.                                 for (j = 1; j < n - i; j++)
  113.                                 {
  114.                                         sb.append(" ");        //字符缓冲器存入 循环次数为每行前边的空格数
  115.                                 }

  116.                                 for (j = 1; j < mat[i].length; j++)
  117.                                 {
  118.                                         if (mat[i][j]!=0)
  119.                                         {
  120.                                                 sb.append(" " + mat[i][j]);  //字符缓冲器存入主要数据
  121.                                         }

  122.                                 }
  123.                                 al.add(sb.toString());   //字符缓冲器所有数据存入 List集合
  124.                                 sb.delete(0,sb.length());//字符缓冲器清空 以便继续循环
  125.                         }

  126.                         //逆序输出List集合所有元素
  127.                         for (int k = al.size()-1;k>0 ;k-- )
  128.                         {
  129.                                 System.out.println(al.get(k));
  130.                         }

  131.                 }

  132.                
  133.                 catch(Exception e)
  134.                 {
  135.                         e.printStackTrace();
  136.                 }

  137.         }
  138.         //******题目3结束********





  139. }
复制代码
贴出来排版没有了  郁闷
结果如下:
输入4


输入7



作者: ︶ㄣ紫藤ㄜ︵    时间: 2013-6-22 09:15
package com.itheima;
import java.util.Arrays;
public class Test {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  //定义一个int类型数组进行保存这些数
  int []number={2,5,9,10,48,95,154,31,59,69};
  //用Arrays.sort排序函数进行排序
  Arrays.sort(number);
  
  //进行素数判断
  for(int i=0,j;i<number.length;i++){
   //用Math.sqrt求平方根
   int n=(int)Math.sqrt(number[i]);
   //放到循环里判断是否符合条件
   for(j=2;j<=n;j++){
    if(number[i]%j==0){  
     break;
    }
   }
   //如果是素数进行赋值为零
   if(j>n){
    number[i]=0;
   }
  }
  System.out.println();
  
  
  
  //用嵌套循环进行控制格式打印
  for(int i=0;i<number.length;i++){
   //每行缩进的格式控制
   for(int j=0;j<i;j++){
     System.out.print(" ");
   }
   System.out.print(number[i]);
   System.out.print("\n");
  }
}
}



经过不断的改进代码,查资料,我终于做出了我认为正确的答案。通过此次的答题我认识到了自己还是太马虎,您一而再再而三的给我机会,衷心的感谢您的指出错误。请您验收。

QQ截图20130622091217.png (4.68 KB, 下载次数: 0)

QQ截图20130622091217.png

作者: 关关雎鸠    时间: 2013-6-22 09:30
唉,没检查代码,出糗了。版主我修改了。。

  1. <P>为了节约空间,值贴出for循环的那一部分。 </P>
复制代码
太粗心了,呵呵~

QQ拼音截图未命名.png (19.5 KB, 下载次数: 0)

QQ拼音截图未命名.png

作者: 关关雎鸠    时间: 2013-6-22 09:31

作者: ︶ㄣ紫藤ㄜ︵    时间: 2013-6-22 09:32

public class HeiMa {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  //定义一个变量进行保存素数的和
        int num=0;
        //把这些数字放到循环中判断是否是素数
  for(int i=2,j;i<100;i++){
   //用Math.sqrt方法求平方根
   int n=(int)Math.sqrt(i);
   
   for(j=2;j<=n;j++){
    if(i%j==0){
     break;
    }
   }
   //将是素数的数进行累加
   if(j>n){
    num+=i;
   
   
   }
  }System.out.println(num);
}

}


请您验收,您辛苦了。

1.png (5.44 KB, 下载次数: 0)

1.png

作者: 萧萧北    时间: 2013-6-22 09:55
1.  打印输出一百以内的素数的累加和...
  1. public class Num {
  2.         public static void main(String[] args)
  3.         {
  4.                 int flag;  //定义标识数 1表示素数  0表示非素数
  5.                 int sum=0;  
  6.                 for(int i=2;i<=100;i++)  //
  7.                 {
  8.                         flag=1;
  9.                         for(int m=2;m<=i/2;m++)
  10.                         {//如果这个数能被整除,则为非素数,flag 标识变为0
  11.                                 if(i%m==0)  
  12.                                         flag=0;                               
  13.                         }       
  14.                        
  15.                         if(flag==1) //如果这个数是素数,则累加
  16.                         {
  17.                                 sum+=i;
  18.                         }
  19.                 }
  20.                 System.out.println(sum);
  21.         }
  22. }
复制代码

作者: 萧萧北    时间: 2013-6-22 09:57
萧萧北 发表于 2013-6-22 09:55
1.  打印输出一百以内的素数的累加和...

运算结果为:1060

版主不好意思哈,忘记贴上我的结果了
作者: 刘晓    时间: 2013-6-22 10:31
  1. 第一题:
  2. /*
  3. * 1.  打印输出一百以内的素数的累加和...  
  4. * */
  5. public class test1 {
  6.         public static void main(String[] args)
  7.         {
  8.                 int sum=1;
  9.                 p:for(int i=2;i<100;i++)//标记循环跳出的位置和控制循环100以内的整数
  10.                 {
  11.                         for(int j=2;j<i;j++)//控制循环的次数
  12.                                 if(i%j==0)      //判断是否为素数
  13.                                         continue p;//是的话,跳到标记的循环位置,继续下一次循环
  14.                                 sum=sum+i;     //是素数的话,累加
  15.                                 System.out.print(i+" ");        //打印所有的素数                               
  16.                                                                                                                                                        
  17.                 }
  18.                 System.out.println();
  19.                 System.out.println("素数和为:"+sum);
  20.         }
  21. }

  22. 第二题:

  23. /*
  24. * 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  25.     数组:  2   5    9    10   48     95   154     31  59    69
  26. * */
  27. public class Test2 {
  28.         public static void main(String[] args)
  29.         {
  30.                 int[] arr={2,5,9,10,48,95,154,31,59,69};
  31.                 for(int i=0;i<arr.length;i++)//把数组从大到小排序
  32.                 {
  33.                         for(int j=i+1;j<arr.length;j++)
  34.                         {
  35.                                 if(arr[i]>arr[j])
  36.                                         {
  37.                                                 int temp=arr[i];
  38.                                                 arr[i]=arr[j];
  39.                                                 arr[j]=temp;
  40.                                         }
  41.                         }               
  42.                 }
  43.                 for(int i=0;i<arr.length;i++)//打印排完序的数组
  44.                         System.out.print(arr[i]+" ");
  45.                 System.out.println();
  46.                 for(int i=0;i<arr.length;i++)//把数组中是素数的数置为零
  47.                 {
  48.                         for(int j=2;j<arr[i];j++)
  49.                         {        if(arr[i]%j==0)      
  50.                                         arr[i]=0;       
  51.                         }
  52.                 }
  53.                 for(int i=0;i<arr.length;i++)//控制循环次数
  54.                 {
  55.                         for(int j=0;j<i;j++)//控制打印空格的次数
  56.                         {
  57.                                         System.out.print(" ");
  58.                         }
  59.                         System.out.println(arr[i]);
  60.                                
  61.                 }
  62.                
  63.         }
  64.        
  65. }
复制代码

作者: 陈新    时间: 2013-6-22 11:25
public class cx5
{
public static void main(String[] args){
  //用来存储和
  int sum = 0;
  //默认该整数是素数
  boolean sS = true;
//2到该数的前一个数如果没有可以被该数整除的则为素数,否则不为素数sS修改的false
for(int i = 2;i <= 100;i++){
  //1不是素数
  for(int j = 2;j < i; j++){
   if(i%j == 0){
   sS = false;
   break;  
   }  
  }   
if(sS){
  sum += i;
}   
  //素数标志器初始化
  sS = true;
}   
System.out.println("1到100之间素数的和为:" + sum);
}
}
//先做一道。。。后面的在想想。。

QQ图片20130622112503.jpg (6.79 KB, 下载次数: 0)

QQ图片20130622112503.jpg

作者: 张歆明    时间: 2013-6-22 12:15
第一题:
  1. /*1. 题目打印输出一百以内的素数的累加和...*/
  2. /*
  3. * 素数:在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  4. * */
  5. /*
  6. * 思路:首先利用循环(1-100)检验每一个数是否是素数
  7. *                  如果是  累加到一个表示和的变量里面
  8. * */
  9. public class Test1 {
  10.         public static void main(String[] args) {
  11.                 //素数的定义是除了1以外 所以 1-100这个范围的素数最小是2  下界定为2
  12.                 int lowPrimeBound =2;
  13.                 //素数的定义是除了1以外 所以 1-100这个范围的素数最小是2
  14.                 int upPrimeBound =100;
  15.                
  16.                 //prime含义是素数  isPrime这个变量值为true表示是素数  这里初始化
  17.                 boolean isPrime =true;
  18.                
  19.                 //primeSum用来记录给定范围的所有素数的和的变量
  20.                 int primeSum =0;
  21.                 //外层循环用:
  22.                         //--来检测给定范围的数有哪些是素数
  23.                 System.out.println("["+ lowPrimeBound+ ", "+upPrimeBound+"]的素数有:");
  24.                 for(int i=lowPrimeBound; i<=upPrimeBound; i++){
  25.                         //内层循环的作用:
  26.                         //--根据素数的定义 :在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  27.                         //--要对给定的数 i 判定除了1和自身(i)以外的整数 是不是有能被i整除的
  28.                         for(int j=2; j<i; j++){
  29.                                 if(i%j==0){ //如果能被整除 整除标记isPrime标记为false  表示不是素数
  30.                                         isPrime =false;
  31.                                         //开区间(1, i)之间一旦有一个数能整除i
  32.                                         //--就表示i不是素数  直接跳出  不用继续进行判断 节省计算量
  33.                                         break;
  34.                                 }
  35.                                 //如果(1, i)之间都没有能整出i的数出现, 就表示这个数i是素数  要更新isPrime
  36.                                 isPrime =true;
  37.                         }
  38.                        
  39.                         if(isPrime){
  40.                                 primeSum += i;
  41.                                 System.out.print(i +" ");
  42.                         }
  43.                 }
  44.                 System.out.println();
  45.                 System.out.println("["+ lowPrimeBound+ ", "+upPrimeBound+"]的素数的和是:"+ primeSum);
  46.         }
  47. }
复制代码

作者: 张歆明    时间: 2013-6-22 12:23
版主 不好意思  刚才寻思 发完  编辑一下 但是 发现不能编辑 只能重新回复
第一题:
  1. /*1. 题目打印输出一百以内的素数的累加和...*/
  2. /*
  3. * 素数:在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  4. * */
  5. /*
  6. * 思路:首先利用循环(1-100)检验每一个数是否是素数
  7. *                  如果是  累加到一个表示和的变量里面
  8. * */
  9. public class Test1 {
  10.         public static void main(String[] args) {
  11.                 //素数的定义是除了1以外 所以 1-100这个范围的素数最小是2  下界定为2
  12.                 int lowPrimeBound =2;
  13.                 //素数的定义是除了1以外 所以 1-100这个范围的素数最小是2
  14.                 int upPrimeBound =100;
  15.                
  16.                 //prime含义是素数  isPrime这个变量值为true表示是素数  这里初始化
  17.                 boolean isPrime =true;
  18.                
  19.                 //primeSum用来记录给定范围的所有素数的和的变量
  20.                 int primeSum =0;
  21.                 //外层循环用:
  22.                         //--来检测给定范围的数有哪些是素数
  23.                 System.out.println("["+ lowPrimeBound+ ", "+upPrimeBound+"]的素数有:");
  24.                 for(int i=lowPrimeBound; i<=upPrimeBound; i++){
  25.                         //内层循环的作用:
  26.                         //--根据素数的定义 :在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  27.                         //--要对给定的数 i 判定除了1和自身(i)以外的整数 是不是有能被i整除的
  28.                         for(int j=2; j<i; j++){
  29.                                 if(i%j==0){ //如果能被整除 整除标记isPrime标记为false  表示不是素数
  30.                                         isPrime =false;
  31.                                         //开区间(1, i)之间一旦有一个数能整除i
  32.                                         //--就表示i不是素数  直接跳出  不用继续进行判断 节省计算量
  33.                                         break;
  34.                                 }
  35.                                 //如果(1, i)之间都没有能整出i的数出现, 就表示这个数i是素数  要更新isPrime
  36.                                 isPrime =true;
  37.                         }
  38.                        
  39.                         if(isPrime){
  40.                                 primeSum += i;
  41.                                 System.out.print(i +" ");
  42.                         }
  43.                 }
  44.                 System.out.println();
  45.                 System.out.println("["+ lowPrimeBound+ ", "+upPrimeBound+"]的素数的和是:"+ primeSum);
  46.         }
  47. }
复制代码
运行结果:

第二题代码:
  1. /*2. 将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。*/
  2. /*
  3. *思路:首先采用一种排序算法将数组进行排序-- 采用选择排序
  4. *              然后对排序后的数组的每一个元素进行素数条件检测  检测到是素数  清零
  5. *             最后 阶梯打印该数组
  6. */
  7. public class Test2 {
  8.         public static void main(String[] args) {
  9.                 int[] arr ={2, 5, 9, 10, 48, 95, 154, 31, 59, 69};
  10.                 //Step1. 对数组进行排序 ---采用选择排序
  11.                 selectSort(arr);
  12.                 System.out.print("改变前:");
  13.                 //****改变前 --打印输出测试
  14.                 printArry(arr);
  15.                
  16.                 //Step2. 对数组中的每一个数进行素数检测  并置换为0
  17.                 primeChange(arr);
  18.                 System.out.println();
  19.                 System.out.print("改变后:");
  20.                 //****改变后 --打印输出测试
  21.                 printArry(arr);
  22.                
  23.                 //Step3. 阶梯状打印数组元素
  24.                 stagePrintArry(arr);
  25.         }
  26.        
  27.         //阶梯状打印数组元素 ---实际上在对角线上进行数组元素的打印---打印三角形
  28.         private static void stagePrintArry(int[] arr) {
  29.                 //优化显示信息
  30.                 System.out.println();
  31.                 //外层循环控制打印的行数
  32.                 //---由于一个元素占据一行 所以  一共打印的行数就是数组中元素的个数
  33.                 for(int i=0; i< arr.length; i++){
  34.                         for(int j=1; j<=i+1; j++){
  35.                                 //对角线元素  打印该数组的元素
  36.                                 if(i==j)
  37.                                         System.out.print(arr[i]);
  38.                                 else
  39.                                         System.out.print(" ");
  40.                         }
  41.                         System.out.println();
  42.                 }
  43.         }

  44.         //打印数组元素
  45.         private static void printArry(int[] arr) {
  46.                 for(int x: arr){
  47.                         System.out.print(x +" ");
  48.                 }
  49.         }
  50.        
  51.         //对数组中的素数进行清零
  52.         private static void primeChange(int[] arr) {
  53.                 for(int x =0; x<arr.length; x++){
  54.                         if(isPrime(arr[x]))//是素数  元素清零
  55.                                 arr[x] =0;
  56.                 }
  57.         }
  58.        
  59.         //判断一个数是否为素数
  60.         private static boolean isPrime(int num) {
  61.                 boolean isPrime =true;
  62.                 //--根据素数的定义 :在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  63.                 //--要对给定的数 i 判定除了1和自身(num)以外的整数 是不是有能被i整除的
  64.                 for(int i=2; i<num; i++){
  65.                         if(num%i==0){ //如果能被整除 整除标记isPrime标记为false  表示不是素数
  66.                                 isPrime =false;
  67.                                 //开区间(1, i)之间一旦有一个数能整除i
  68.                                 //--就表示i不是素数  直接跳出  不用继续进行判断 节省计算量
  69.                                 break;
  70.                         }
  71.                         //如果(1, i)之间都没有能整出i的数出现, 就表示这个数i是素数  要更新isPrime
  72.                         isPrime =true;
  73.                 }
  74.                 return isPrime;
  75.         }

  76.         //对数组进行选择排序
  77.         private static void selectSort(int[] arr) {
  78.                 //循环数组中的元素 --- 每完成一次外层循环  数组对应的位置就是本次循环中最小的值
  79.                 //--i< arr.length-1 最后一次的时候 一定是循环到数组的最后一个元素  最后一个元素已经没有
  80.                 //--要比较的对象了 所以 将i< arr.length改为 i< arr.length -1
  81.                 for(int i =0; i< arr.length-1; i++){
  82.                         //每个位置的元素都要和该位置以后素组元素比较
  83.                         for(int j =i+1; j <arr.length; j++){
  84.                                 //升序排列 --前面的数大了  就要和后面的交换
  85.                                 if(arr[i] >arr[j])
  86.                                         swap(i, j, arr);
  87.                         }
  88.                 }
  89.         }

  90.         //交换数组中两个元素的位置
  91.         private static void swap(int i, int j, int[] arr) {
  92.                 int temp =arr[i];
  93.                 arr[i] =arr[j];
  94.                 arr[j] =temp;
  95.         }
  96. }
复制代码
运行结果:

第三题代码:
  1. /*3.倒序杨辉三角*/
  2. import java.util.ArrayList;
  3. public class Test3 {
  4.         public static void main(String[] args) {
  5.                 int layers =4;
  6.                 //Step1. 产生杨辉三角列表
  7.                 ArrayList<ArrayList<Integer>> yanghuiTrList = generateYangTrList(layers);
  8.                 System.out.println("产生的杨辉列表如下:");
  9.                 printYanghuiList(yanghuiTrList);
  10.                
  11.                 //Step2.倒序打印杨辉三角
  12.                 System.out.println("倒序打印杨辉三角如下:");
  13.                 printInverseYanghuiArr(layers, yanghuiTrList);
  14.         }
  15.        
  16.         /**
  17.          * function: 倒序打印杨辉三角
  18.          * @param layers ---表示杨辉三角的层数
  19.          * @param yanghuiTrList ----杨辉三角的列表
  20.          */
  21.         private static void printInverseYanghuiArr(int layers,
  22.                         ArrayList<ArrayList<Integer>> yanghuiTrList) {
  23.                 //Step1. 控制打印的行数
  24.                 for(int i=1, layer =layers-1; i<=layers; i++, layer--){
  25.                         //先打印空格部分  填充空白区域
  26.                         for(int j=1; j<= i-1; j++){
  27.                                 System.out.print(" ");
  28.                         }
  29.                        
  30.                         //取出本层的杨辉数字列表
  31.                         ArrayList<Integer> eachLayerList =yanghuiTrList.get(layer);
  32.                        
  33.                         int index =0;
  34.                         for(int j=1; j<=9 -2*i; j++){
  35.                                 if(j%2 ==0)//隔一位打印一个数字
  36.                                         System.out.print(" ");
  37.                                 else{
  38.                                         System.out.print(eachLayerList.get(index));
  39.                                         index++;
  40.                                 }
  41.                         }
  42.                         System.out.println();
  43.                 }
  44.         }
  45.        
  46.         //打印杨辉列表  -- 测试使用
  47.         private static void printYanghuiList(
  48.                         ArrayList<ArrayList<Integer>> yanghuiTrList) {
  49.                 System.out.println("**************************************");
  50.                 for(int i=0; i<yanghuiTrList.size(); i++){
  51.                         for(int j=0; j<yanghuiTrList.get(i).size(); j++){
  52.                                 System.out.print(yanghuiTrList.get(i).get(j)+ " ");
  53.                         }
  54.                         System.out.println();
  55.                 }
  56.                 System.out.println("**************************************");
  57.         }

  58.         //产生杨辉三角列表  方法的参数表示产生几层杨辉三角
  59.         private static ArrayList<ArrayList<Integer>> generateYangTrList(int layers) {
  60.                 ArrayList<ArrayList<Integer>> trList =new ArrayList<ArrayList<Integer>>();
  61.                 ArrayList<Integer> eachLayerList =null;
  62.                 //顺序产生各层杨辉列表
  63.                 for(int i=0; i<layers; i++){
  64.                         eachLayerList =new ArrayList<Integer>();
  65.                        
  66.                         //第0层杨辉列表: 1
  67.                         if(i==0){
  68.                                 eachLayerList.add(1);
  69.                                 trList.add(eachLayerList);
  70.                                 continue;
  71.                         }
  72.                        
  73.                         //第1层杨辉列表: 1  1
  74.                         if(i==1){
  75.                                 eachLayerList.add(1);
  76.                                 eachLayerList.add(1);
  77.                                 trList.add(eachLayerList);
  78.                                 continue;
  79.                         }
  80.                        
  81.                         //第0, 1层以外的杨辉列表
  82.                         //--每层杨辉列表的首数字都为1
  83.                         eachLayerList.add(1);
  84.                        
  85.                         //取出最后一次的杨辉列表  一共下面累加获得本层的杨辉列表的元素
  86.                         ArrayList<Integer> lastList =trList.get(trList.size()-1);
  87.                        
  88.                         //累加上一层的相邻两个元素进行求和
  89.                         for(int startIndex =0; startIndex <lastList.size() -1; startIndex++){
  90.                                 int adjacentSum =lastList.get(startIndex)+ lastList.get(startIndex+1);
  91.                                 eachLayerList.add(adjacentSum);
  92.                         }
  93.                         //--每层杨辉列表的尾数字都为1
  94.                         eachLayerList.add(1);
  95.                        
  96.                         trList.add(eachLayerList);
  97.                 }
  98.                 return trList;
  99.         }
  100. }
复制代码
运行结果:

test1.jpg (29.32 KB, 下载次数: 0)

第一题结果

第一题结果

test2.jpg (26.49 KB, 下载次数: 0)

第二题运行结果

第二题运行结果

test3.jpg (38.73 KB, 下载次数: 0)

第三题运行结果

第三题运行结果

作者: 萧萧北    时间: 2013-6-22 12:23
2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
    数组:  2   5    9    10   48     95   154     31  59    69
  1. package test;

  2. public class Num2 {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr={2,5,9,10,48,95,154,31,59,69};
  6.                 bubbleSort(arr);   //调用排序功能
  7.                 isS(arr);                        //调用判断素数功能
  8.                 printArray(arr);        //调用输出数组功能       
  9.         }
  10.        
  11.         //定义冒泡排序功能  由小到大
  12.         static public void bubbleSort(int[] arr)
  13.         {
  14.                 for(int x=arr.length-1;x>0;x--)
  15.                 {       
  16.                         for(int y=0;y<x;y++)
  17.                         {
  18.                                 if(arr[y]>arr[y+1])
  19.                                 {
  20.                                         int temp=arr[y];
  21.                                         arr[y]=arr[y+1];
  22.                                         arr[y+1]=temp;
  23.                                 }
  24.                         }                       
  25.                 }
  26.         }
  27.        
  28.         //定义按阶梯状输出 数组中元素
  29.         public static void printArray(int[] arr)
  30.         {
  31.                 for(int i=0;i<arr.length;i++)
  32.                 {       
  33.                         for(int j=0;j<=i;j++)
  34.                         {//实现按阶梯状输出  根据行数空出相应的空格
  35.                                 System.out.print(" ");
  36.                         }
  37.                         System.out.println(arr[i]); //输出数组元素
  38.                 }
  39.         }
  40.        
  41.         //判断素数的函数
  42.         public static void isS(int[] arr)
  43.         {
  44.                 int flag;  //定义标识数 1表示素数  0表示非素数
  45.                 for(int i=0;i<arr.length;i++)
  46.                 {
  47.                         flag=1;
  48.                         for(int m=2;m<=arr[i]/2;m++)
  49.                         {//如果这个数能被整除,则为非素数,flag 标识变为0
  50.                                 if(arr[i]%m==0)  
  51.                                         flag=0;                               
  52.                         }       
  53.                         //如果这个数是素数则赋值为0
  54.                         if(flag==1)
  55.                         {
  56.                                 arr[i]=0;   
  57.                         }
  58.                        
  59.                 }
  60.         }
  61. }
复制代码

作者: 萧萧北    时间: 2013-6-22 12:25
萧萧北 发表于 2013-6-22 12:23
2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
    数组:  2   5    9    10 ...

.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出

运算结果为:

搜狗截图_2013-06-22_12-24-59.png (2.56 KB, 下载次数: 0)

2题 运算结果

2题 运算结果

作者: 蔡汉康    时间: 2013-6-22 12:27
{:soso_e100:}来看看
作者: 蔡汉康    时间: 2013-6-22 13:03
  1. package itheima;

  2. import java.util.Arrays;

  3. public class Sushu {

  4.         public static void main(String[] args) {
  5.                 System.out.println("-------------第一题--------------");
  6.                 int sum = 0;
  7.                 //因为1不是素数也不是合数,所以从2开始判断
  8.                 for(int i = 2; i <= 100; i++) {
  9.             //如果是素数就进行累加
  10.                         if(isPrime(i)) {
  11.                 sum+=i;
  12.             }
  13.         }     
  14.                 System.out.println("1~100的素数和:"+sum);
  15.                 System.out.println("-------------第二题--------------");       
  16.                 int [] arrs = {2,5,9,10,48,95,154,31,59,69};               
  17.                 //打印数组改变前内容
  18.                 System.out.println("数组改变前:"+Arrays.toString(arrs));
  19.                 //数组排序
  20.                 Arrays.sort(arrs);
  21.                 //遍历数组
  22.                 for(int i = 0;i<arrs.length;i++){
  23.                         //遍历数组,如果是素数,就将其赋值为0
  24.                         if(isPrime(arrs[i])){
  25.                                 arrs[i]=0;
  26.                         }                       
  27.                 }       
  28.                 //打印数组改变后内容
  29.                 System.out.println("数组改变后:"+Arrays.toString(arrs));
  30.                
  31.                 //打印阶梯状数组
  32.                 for(int i = 0;i<arrs.length;i++){
  33.                         for(int j = 0;j<i;j++)
  34.                                 System.out.print("  ");
  35.                         System.out.println(arrs[i]);
  36.                 }
  37.         }
  38.         //判断是否为素数的方法,返回值为boolean
  39.         public static boolean isPrime(int num) {          
  40.                 //把一个数开方,得到该数可能被整除的取值范围:2~该数的开方值
  41.                for(int i = 2; i <= Math.sqrt(num); i++) {
  42.                        //如果能被整除,就不是素数
  43.                    if(num % i == 0) {
  44.                      return false;
  45.                    }   
  46.                }
  47.                //否则不能被整除,即是素数
  48.                return true;
  49.             }
  50. }
复制代码

QQ截图20130622130455.png (8.72 KB, 下载次数: 0)

QQ截图20130622130455.png

作者: 蔡汉康    时间: 2013-6-22 13:07
不好意思啊,第二题因为疏忽,判断条件写反了,这是修正好的代码和结果!!!
  1. package itheima;

  2. import java.util.Arrays;

  3. public class Sushu {

  4.         public static void main(String[] args) {
  5.                 System.out.println("-------------第一题--------------");
  6.                 int sum = 0;
  7.                 //因为1不是素数也不是合数,所以从2开始判断
  8.                 for(int i = 2; i <= 100; i++) {
  9.             //如果是素数就进行累加
  10.                         if(isPrime(i)) {
  11.                 sum+=i;
  12.             }
  13.         }     
  14.                 System.out.println("1~100的素数和:"+sum);
  15.                 System.out.println("-------------第二题--------------");       
  16.                 int [] arrs = {2,5,9,10,48,95,154,31,59,69};               
  17.                 //打印数组改变前内容
  18.                 System.out.println("数组改变前:"+Arrays.toString(arrs));
  19.                 //数组排序
  20.                 Arrays.sort(arrs);
  21.                 //遍历数组
  22.                 for(int i = 0;i<arrs.length;i++){
  23.                         //遍历数组,如果是素数,就将其赋值为0
  24.                         if(isPrime(arrs[i])){
  25.                                
  26.                         }else{
  27.                                 arrs[i]=0;
  28.                         }               
  29.                 }       
  30.                 //打印数组改变后内容
  31.                 System.out.println("数组改变后:"+Arrays.toString(arrs));
  32.                
  33.                 //打印阶梯状数组
  34.                 for(int i = 0;i<arrs.length;i++){
  35.                         for(int j = 0;j<i;j++)
  36.                                 System.out.print("  ");
  37.                         System.out.println(arrs[i]);
  38.                 }
  39.         }
  40.         //判断是否为素数的方法,返回值为boolean
  41.         public static boolean isPrime(int num) {          
  42.                 //把一个数开方,得到该数可能被整除的取值范围:2~该数的开方值
  43.                for(int i = 2; i <= Math.sqrt(num); i++) {
  44.                        //如果能被整除,就不是素数
  45.                    if(num % i == 0) {
  46.                      return false;
  47.                    }   
  48.                }
  49.                //否则不能被整除,即是素数
  50.                return true;
  51.             }
  52. }
复制代码

QQ截图20130622130903.png (7.28 KB, 下载次数: 0)

QQ截图20130622130903.png

作者: xiaohu1218    时间: 2013-6-22 13:13
我今天上午刚看到的,三道题都写了

  1. import java.util.Scanner;

  2. class GetPrimeNumber {

  3.         /**
  4.          * @param args
  5.          *
  6.          * 1.  打印输出一百以内的素数的累加和...  
  7.      * 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  8.      *  数组:  2   5    9    10   48     95   154     31  59    69
  9.      * 3.手动输入一个自然数N,反向打印N行杨辉三角。
  10.          */
  11.        
  12.         private static int sum = 0;//定义全局变量素数和 sum
  13.         private static int arr[]={2,5,9,10,48,95,154,31,59,69};//定义并初始化数组
  14.         private static int rownum = 0;//定义杨辉三角的行数rownum
  15.         public static void main(String[] args) {
  16.                 // TODO Auto-generated method stub
  17.                 getPrimeNumSum();//获取100以内的素数累加和
  18.                 printNewNum();//重新排列输出
  19.                 printTriangle();//反向打印杨辉三角
  20.                
  21.         }
  22.         private static void getPrimeNumSum()
  23.         {
  24.                 for(int i=2;i<100;i++)
  25.                 {
  26.                         if(i == 2 || i==3)//将2、3 两个特殊的数单列出来
  27.                         {
  28.                                 System.out.println(i+"是素数");
  29.                                 sum += i;
  30.                         }       
  31.                         for(int j=2;j<Math.sqrt(i);j++)
  32.                         {
  33.                                 //如果除了1和它本身两个约数外,还有别的约数,那么这个数就不是素数
  34.                                
  35.                                 if(i%j==0 )
  36.                                 {
  37.                                         break;
  38.                                 }  
  39.                                
  40.                                 //如果除了1和它本身两个约数外,没有别的约数,那么这个数就是素数
  41.                                 //加上j> Math.sqrt(i)-1)是为了限制计算和打印只进行一次
  42.                                 else if((i%j != 0) && (j > Math.sqrt(i)-1) )
  43.                                 {
  44.                                         System.out.println(i+"是素数");
  45.                                         sum += i;
  46.                                 }
  47.                         }
  48.                        
  49.                        
  50.                 }
  51.                
  52.                 System.out.println("100以内的素数之和是:"+sum);
  53.         }
  54.         // 数组:  2   5    9    10   48     95   154     31  59    69
  55.         private static void printNewNum()
  56.         {
  57.                
  58.                 for(int k = 0;k < arr.length;k++)//判别数据是否是素数,并将数组中的素数改变为0
  59.                 {       
  60.                         if(arr[k]==2 || arr[k]==3)
  61.                         {
  62.                                 arr[k] = 0;                               
  63.                         }
  64.                         else
  65.                         {
  66.                                 for(int kk = 2;kk <Math.sqrt(arr[k]);kk++)
  67.                                 {
  68.                                         if(arr[k] % kk == 0)//如果有其他约数,则跳出循环
  69.                                                 break;
  70.                                        
  71.                                         else if(arr[k]%kk !=0 && kk>Math.sqrt(arr[k])-1)//如果是素数,则将其数值修改为0
  72.                                                 arr[k] = 0;
  73.                                 }
  74.                        
  75.                         }
  76.                        
  77.                 }
  78.                 for (int ii = 0;ii<arr.length;ii++)//打印数据
  79.                         for(int jj = 0 ;jj <=ii ;jj++)
  80.                                 if(jj == ii)
  81.                                         System.out.println(arr[ii]);//对角线形式打印并换行
  82.                                 else
  83.                                         System.out.print(" ");//打印空格
  84.                                        
  85.         }
  86.         private static int getRow()
  87.         {
  88.                 Scanner sc = new Scanner(System.in);// 获取输入数字
  89.                  try
  90.                  {
  91.                          rownum = sc.nextInt();
  92.                          while(rownum<1)//数据合法性判断
  93.                      {
  94.                              System.out.println("输入的数据大小不合法,请重新输入:");
  95.                              rownum = sc.nextInt();
  96.                      }
  97.                  }
  98.                  catch(Exception e)
  99.                  {
  100.                          System.out.println("输入数据不合法,出现异常:"+e.toString());
  101.                          System.out.println("请重新输入一个正整数:");
  102.                          getRow();                       
  103.                  }                         
  104.                  return rownum;
  105.                
  106.         }
  107.         //反向打印杨辉三角 组合数开始结束部分采用定义的格式打印1 中间部分采用定义的方法计算出相应的数值并打印出来
  108.         private static void  printTriangle()
  109.         {
  110.                 System.out.println("请输入杨辉三角的行数:");
  111.                  rownum= getRow();
  112.                  //System.out.println(rownum);
  113.                 for(int row = 1;row < rownum+1 ;row++)
  114.                         {
  115.                                 for(int col=1;col<=2*rownum-row ;col++)
  116.                                
  117.                                 {
  118.                                         if(row == 1 && col%2 == 0)
  119.                                                 System.out.print(" ");
  120.                                         else if(col == row || col == 2*rownum-row)//每行的开始、结束部分都是1
  121.                                                 System.out.print(1);
  122.                                        
  123.                                         else if (col>row && col <2*rownum-row && col % row == 0 )
  124.                                         {
  125.                                                 //求分子
  126.                                                 int numerator =getFactorial(rownum-row);
  127.                                                 //求分母
  128.                                                 int denominator = getFactorial(rownum-row-(col-1)/2)*getFactorial((col-1)/2);
  129.                                                 //System.out.print(numerator+" "+denominator);
  130.                                                 System.out.print(numerator/denominator);
  131.                                         }
  132.                                         else
  133.                                                 System.out.print(" ");
  134.                                 }
  135.                                 System.out.println();
  136.                         }       
  137.         }
  138.         private static int getFactorial(int n)//求n的阶乘
  139.         {
  140.                 if(n==1)
  141.                         return 1;
  142.                 else if(n>1)
  143.                         return(n* getFactorial(n-1));
  144.                 else
  145.                         System.out.println("参数有误!");
  146.                 return -1;
  147.                
  148.         }
  149.        

  150. }
复制代码

作者: 星仔子    时间: 2013-6-22 13:45
  1. /*3.倒序杨辉三角*/
  2. import java.util.ArrayList;
  3. public class Test3 {
  4.         public static void main(String[] args) {
  5.                 int layers =4;
  6.                 //Step1. 产生杨辉三角列表
  7.                 ArrayList<ArrayList<Integer>> yanghuiTrList = generateYangTrList(layers);
  8.                 System.out.println("产生的杨辉列表如下:");
  9.                 printYanghuiList(yanghuiTrList);
  10.                
  11.                 //Step2.倒序打印杨辉三角
  12.                 System.out.println("倒序打印杨辉三角如下:");
  13.                 printInverseYanghuiArr(layers, yanghuiTrList);
  14.         }
  15.        
  16.         /**
  17.          * function: 倒序打印杨辉三角
  18.          * @param layers ---表示杨辉三角的层数
  19.          * @param yanghuiTrList ----杨辉三角的列表
  20.          */
  21.         private static void printInverseYanghuiArr(int layers,
  22.                         ArrayList<ArrayList<Integer>> yanghuiTrList) {
  23.                 //Step1. 控制打印的行数
  24.                 for(int i=1, layer =layers-1; i<=layers; i++, layer--){
  25.                         //先打印空格部分  填充空白区域
  26.                         for(int j=1; j<= i-1; j++){
  27.                                 System.out.print(" ");
  28.                         }
  29.                        
  30.                         //取出本层的杨辉数字列表
  31.                         ArrayList<Integer> eachLayerList =yanghuiTrList.get(layer);
  32.                        
  33.                         int index =0;
  34.                         for(int j=1; j<=9 -2*i; j++){
  35.                                 if(j%2 ==0)//隔一位打印一个数字
  36.                                         System.out.print(" ");
  37.                                 else{
  38.                                         System.out.print(eachLayerList.get(index));
  39.                                         index++;
  40.                                 }
  41.                         }
  42.                         System.out.println();
  43.                 }
  44.         }
  45.        
  46.         //打印杨辉列表  -- 测试使用
  47.         private static void printYanghuiList(
  48.                         ArrayList<ArrayList<Integer>> yanghuiTrList) {
  49.                
  50.                 for(int i=0; i<yanghuiTrList.size(); i++){
  51.                         for(int j=0; j<yanghuiTrList.get(i).size(); j++){
  52.                                 System.out.print(yanghuiTrList.get(i).get(j)+ " ");
  53.                         }
  54.                         System.out.println();
  55.                 }
  56.                
  57.         }

  58.         //产生杨辉三角列表  方法的参数表示产生几层杨辉三角
  59.         private static ArrayList<ArrayList<Integer>> generateYangTrList(int layers) {
  60.                 ArrayList<ArrayList<Integer>> trList =new ArrayList<ArrayList<Integer>>();
  61.                 ArrayList<Integer> eachLayerList =null;
  62.                 //顺序产生各层杨辉列表
  63.                 for(int i=0; i<layers; i++){
  64.                         eachLayerList =new ArrayList<Integer>();
  65.                        
  66.                         //第0层杨辉列表: 1
  67.                         if(i==0){
  68.                                 eachLayerList.add(1);
  69.                                 trList.add(eachLayerList);
  70.                                 continue;
  71.                         }
  72.                        
  73.                         //第1层杨辉列表: 1  1
  74.                         if(i==1){
  75.                                 eachLayerList.add(1);
  76.                                 eachLayerList.add(1);
  77.                                 trList.add(eachLayerList);
  78.                                 continue;
  79.                         }
  80.                        
  81.                         //第0, 1层以外的杨辉列表
  82.                         //--每层杨辉列表的首数字都为1
  83.                         eachLayerList.add(1);
  84.                        
  85.                         //取出最后一次的杨辉列表  一共下面累加获得本层的杨辉列表的元素
  86.                         ArrayList<Integer> lastList =trList.get(trList.size()-1);
  87.                        
  88.                         //累加上一层的相邻两个元素进行求和
  89.                         for(int startIndex =0; startIndex <lastList.size() -1; startIndex++){
  90.                                 int adjacentSum =lastList.get(startIndex)+ lastList.get(startIndex+1);
  91.                                 eachLayerList.add(adjacentSum);
  92.                         }
  93.                         //--每层杨辉列表的尾数字都为1
  94.                         eachLayerList.add(1);
  95.                        
  96.                         trList.add(eachLayerList);
  97.                 }
  98.                 return trList;
  99.         }
  100. }
复制代码
结果:
产生的杨辉列表如下:
1
1 1
1 2 1
1 3 3 1
倒序打印杨辉三角如下:
1 3 3 1
1 2 1
  1 1
   1
  1. /*2. 将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。*/

  2. public class Test2 {
  3.         public static void main(String[] args) {
  4.                 int[] arrs ={2, 5, 9, 10, 48, 95, 154, 31, 59, 69};
  5.                 //对数组进行排序 ---采用选择排序
  6.                 selectSort(arrs);
  7.                 System.out.print("数组改变前:");
  8.                
  9.                 printArry(arrs);
  10.                
  11.                 //对数组中的每一个数进行素数检测  并置换为0
  12.                 primeIsZero(arrs);
  13.                 System.out.println();
  14.                 System.out.print("数组改变后:");
  15.                
  16.                 printArry(arrs);
  17.                
  18.                 // 阶梯状打印数组元素
  19.                 PrintArry1(arrs);
  20.         }
  21.        
  22.         //阶梯状打印数组元素
  23.         private static void PrintArry1(int[] arr) {
  24.                
  25.                 //外层循环控制打印的行数
  26.                
  27.                 for(int i=0; i< arr.length; i++){
  28.                         for(int j=1; j<=i+1; j++){
  29.                                
  30.                                 if(i==j)
  31.                                         System.out.print(arr[i]);
  32.                                 else
  33.                                         System.out.print(" ");
  34.                         }
  35.                         System.out.println();
  36.                 }
  37.         }

  38.         //打印数组元素
  39.         private static void printArry(int[] arr) {
  40.                 for(int x: arr){
  41.                         System.out.print(x +" ");
  42.                 }
  43.         }
  44.        
  45.         //对数组中的素数进行清零
  46.         private static void primeIsZero(int[] arr) {
  47.                 for(int x =0; x<arr.length; x++){
  48.                         if(isPrime(arr[x]))//是素数  元素清零
  49.                                 arr[x] =0;
  50.                 }
  51.         }
  52.        
  53.         //判断一个数是否为素数
  54.         private static boolean isPrime(int num) {
  55.                 boolean isPrime =true;
  56.                
  57.                 for(int i=2; i<num; i++){
  58.                         if(num%i==0){
  59.                                 isPrime =false;
  60.                                
  61.                                 break;
  62.                         }
  63.                        
  64.                         isPrime =true;
  65.                 }
  66.                 return isPrime;
  67.         }

  68.         //对数组进行选择排序
  69.         private static void selectSort(int[] arr) {
  70.                
  71.                 for(int i =0; i< arr.length-1; i++){
  72.                        
  73.                         for(int j =i+1; j <arr.length; j++){
  74.                                
  75.                                 if(arr[i] >arr[j])
  76.                                         swap(i, j, arr);
  77.                         }
  78.                 }
  79.         }

  80.         //交换数组中两个元素的位置
  81.         private static void swap(int i, int j, int[] arr) {
  82.                 int temp =arr[i];
  83.                 arr[i] =arr[j];
  84.                 arr[j] =temp;
  85.         }
  86. }
复制代码
结果:
数组改变前:2 5 9 10 31 48 59 69 95 154
数组改变后:0 0 9 10 0 48 0 69 95 154  
0
9
  10
   0
    48
     0
      69
       95
        154
  1. /*1. 题目打印输出一百以内的素数的累加和...*/

  2. /*
  3. * 思路:
  4. * 素数是指,在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
  5. * 首先利用循环(1-100)检验每一个数是否是素数
  6. *                  如果是  累加到一个表示和的变量里面
  7. * */
  8. public class Test1 {
  9.         public static void main(String[] args) {
  10.                 //素数的定义是除了1以外,所以在1~100之间,最小值为2,最大值为100
  11.                 int min =2;
  12.                 int max =100;
  13.                
  14.                 //定义变量isPrime,当为true时为素数
  15.                 boolean isPrime =true;
  16.                
  17.                 //所有素数的和的变量
  18.                 int sum =0;
  19.                 //外层循环用:
  20.                         //--来检测给定范围的数有哪些是素数
  21.                 System.out.println("("+ min+ ", "+max+")的素数有:");
  22.                 for(int i=min; i<=max; i++){
  23.                        
  24.                         for(int j=2; j<i; j++){
  25.                                 if(i%j==0){ //如果能被整除 整除标记isPrime标记为false  表示不是素数
  26.                                         isPrime =false;
  27.                                        
  28.                                         break;
  29.                                 }
  30.                                
  31.                                 isPrime =true;
  32.                         }
  33.                        
  34.                         if(isPrime){
  35.                                 sum += i;
  36.                                 System.out.print(i +" ");
  37.                         }
  38.                 }
  39.                 System.out.println();
  40.                 System.out.println("("+ min+ ", "+max+")的素数的和是:"+ sum);
  41.         }
  42. }
复制代码
结果:
(2, 100)的素数有:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
(2, 100)的素数的和是:1060


作者: xiaohu1218    时间: 2013-6-22 14:14
xiaohu1218 发表于 2013-6-22 13:13
我今天上午刚看到的,三道题都写了

不好意思,忘了贴了,刚才发现我的第三题有点Bug,修改了一下,现在把所有正式的程序和结果都重新贴上来,辛苦版主了

  1. import java.util.Scanner;

  2. class GetPrimeNumber {

  3.         /**
  4.          * @param args
  5.          *
  6.          * 1.  打印输出一百以内的素数的累加和...  
  7.      * 2.将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
  8.      *  数组:  2   5    9    10   48     95   154     31  59    69
  9.      * 3.手动输入一个自然数N,反向打印N行杨辉三角。
  10.          */
  11.        
  12.         private static int sum = 0;//定义全局变量素数和 sum
  13.         private static int arr[]={2,5,9,10,48,95,154,31,59,69};//定义并初始化数组
  14.         private static int rownum = 0;//定义杨辉三角的行数rownum
  15.         public static void main(String[] args) {
  16.                 // TODO Auto-generated method stub
  17.                 getPrimeNumSum();//获取100以内的素数累加和
  18.                 printNewNum();//重新排列输出
  19.                 printTriangle();//反向打印杨辉三角
  20.                
  21.         }
  22.         private static void getPrimeNumSum()
  23.         {
  24.                 for(int i=2;i<100;i++)
  25.                 {
  26.                         if(i == 2 || i==3)//将2、3 两个特殊的数单列出来
  27.                         {
  28.                                 System.out.println(i+"是素数");
  29.                                 sum += i;
  30.                         }       
  31.                         for(int j=2;j<Math.sqrt(i);j++)
  32.                         {
  33.                                 //如果除了1和它本身两个约数外,还有别的约数,那么这个数就不是素数
  34.                                
  35.                                 if(i%j==0 )
  36.                                 {
  37.                                         break;
  38.                                 }  
  39.                                
  40.                                 //如果除了1和它本身两个约数外,没有别的约数,那么这个数就是素数
  41.                                 //加上j> Math.sqrt(i)-1)是为了限制计算和打印只进行一次
  42.                                 else if((i%j != 0) && (j > Math.sqrt(i)-1) )
  43.                                 {
  44.                                         System.out.println(i+"是素数");
  45.                                         sum += i;
  46.                                 }
  47.                         }
  48.                        
  49.                        
  50.                 }
  51.                
  52.                 System.out.println("100以内的素数之和是:"+sum);
  53.         }
  54.         // 数组:  2   5    9    10   48     95   154     31  59    69
  55.         private static void printNewNum()
  56.         {
  57.                
  58.                 for(int k = 0;k < arr.length;k++)//判别数据是否是素数,并将数组中的素数改变为0
  59.                 {       
  60.                         if(arr[k]==2 || arr[k]==3)
  61.                         {
  62.                                 arr[k] = 0;                               
  63.                         }
  64.                         else
  65.                         {
  66.                                 for(int kk = 2;kk <Math.sqrt(arr[k]);kk++)
  67.                                 {
  68.                                         if(arr[k] % kk == 0)//如果有其他约数,则跳出循环
  69.                                                 break;
  70.                                        
  71.                                         else if(arr[k]%kk !=0 && kk>Math.sqrt(arr[k])-1)//如果是素数,则将其数值修改为0
  72.                                                 arr[k] = 0;
  73.                                 }
  74.                        
  75.                         }
  76.                        
  77.                 }
  78.                 for (int ii = 0;ii<arr.length;ii++)//打印数据
  79.                         for(int jj = 0 ;jj <=ii ;jj++)
  80.                                 if(jj == ii)
  81.                                         System.out.println(arr[ii]);//对角线形式打印并换行
  82.                                 else
  83.                                         System.out.print(" ");//打印空格
  84.                                        
  85.         }
  86.         private static int getRow()
  87.         {
  88.                 Scanner sc = new Scanner(System.in);// 获取输入数字
  89.                  try
  90.                  {
  91.                          rownum = sc.nextInt();
  92.                          while(rownum<1)//数据合法性判断
  93.                      {
  94.                              System.out.println("输入的数据大小不合法,请重新输入:");
  95.                              rownum = sc.nextInt();
  96.                      }
  97.                  }
  98.                  catch(Exception e)
  99.                  {
  100.                          System.out.println("输入数据不合法,出现异常:"+e.toString());
  101.                          System.out.println("请重新输入一个正整数:");
  102.                          getRow();                       
  103.                  }                         
  104.                  return rownum;
  105.                
  106.         }
  107.         //反向打印杨辉三角 组合数开始结束部分采用定义的格式打印1 中间部分采用定义的方法计算出相应的数值并打印出来
  108.         private static void  printTriangle()
  109.         {
  110.                 System.out.println("请输入杨辉三角的行数:");
  111.                  rownum= getRow();
  112.                  //System.out.println(rownum);
  113.                 for(int row = 1;row < rownum+1 ;row++)
  114.                         {
  115.                                 for(int col=1;col<=2*rownum-row ;col++)
  116.                                
  117.                                 {
  118.                                         if(row == 1 && col%2 == 0)
  119.                                                
  120.                                                 {
  121.                                                         System.out.print(" ");
  122.                                                         continue;
  123.                                                
  124.                                                 }
  125.                                         else if(col == row || col == 2*rownum-row)//每行的开始、结束部分都是1
  126.                                                 {
  127.                                                         System.out.print(1);
  128.                                                         continue;
  129.                                                 }
  130.                                        
  131.                                         else if (col>row && col <2*rownum-row && (col-row) %2  == 0 )
  132.                                         {
  133.                                                 //求分子
  134.                                                 if((rownum-row-(col-row)/2)>=0 && (col-row)/2>=0)
  135.                                                         {
  136.                                                         int numerator =getFactorial(rownum-row);
  137.                                                         int denominator = getFactorial(rownum-row-(col-row)/2)*getFactorial((col-row)/2);
  138.                                                         System.out.print(numerator/denominator);
  139.                                                         continue;
  140.                                                         }
  141.                                                 //求分母
  142.                                                                                                
  143.                                         }                               
  144.                                        
  145.                                         else
  146.                                                 System.out.print(" ");
  147.                                 }
  148.                                 System.out.println();
  149.                         }       
  150.         }
  151.         private static int getFactorial(int n)//求n的阶乘
  152.         {
  153.                 if(n==1 || n==0)
  154.                         return 1;
  155.                 else if(n>1)
  156.                         return(n* getFactorial(n-1));
  157.                 else
  158.                         System.out.println("参数有误!");
  159.                 return -1;
  160.                
  161.         }
  162.        

  163. }
复制代码
运行结果如下:
2是素数
3是素数
5是素数
7是素数
11是素数
13是素数
17是素数
19是素数
23是素数
29是素数
31是素数
37是素数
41是素数
43是素数
47是素数
53是素数
59是素数
61是素数
67是素数
71是素数
73是素数
79是素数
83是素数
89是素数
97是素数
100以内的素数之和是:1060
0
0
  9
   10
    48
     95
      154
       0
        0
         69
请输入杨辉三角的行数:
5
1 4 6 4 1
1 3 3 1
  1 2 1
   1 1
    1

作者: 刘晓    时间: 2013-6-22 14:19

第一题结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
素数和为:1061
第二题的结果:
C:\Users\Administrator\Desktop
作者: .netNo1    时间: 2013-6-22 15:14
  1. int length = 0; //杨辉三角形的长度

  2.                         Console.Write("输入杨辉三角长度");
  3.                         length = Convert.ToInt32(Console.ReadLine()); //指定杨辉三角的长度

  4.                         if (length <= 13)
  5.                         {
  6.                                 int[][] a = new int[length][]; //二维数组
  7.                                 for (int i = 0; i < a.Length; i++)
  8.                                 {
  9.                                         a[i] = new int[i + 1];//遍历,赋值增量
  10.                                 }
  11.                                 for (int j = 0; j < a.Length; j++)
  12.                                 {
  13.                                         a[j][0] = 1; //把第一列的元素都赋1
  14.                                         a[j][j] = 1;//把第一列最右边的元素都赋1
  15.                                         for (int m = 1; m < a[j].Length - 1; m++)
  16.                                         {
  17.                                                 a[j][m] = a[j - 1][m - 1] + a[j - 1][m];//其余的值由杨辉公式计算
  18.                                         }
  19.                                 }
  20.                                 for (int i = a.Length - 1; i >= 0; i--)//遍历数组输出杨辉三角形
  21.                                 {
  22.                                         for (int b = 0; b < a.Length - a[i].Length; b++)
  23.                                         {
  24.                                                 Console.Write("\0");  //输出空格
  25.                                         }
  26.                                         for (int j = a[i].Length-1; j >= 0; j--)
  27.                                         {
  28.                                                 Console.Write("{0}\0", a[i][j]);
  29.                                         }
  30.                                         Console.Write("\n");  //换行
  31.                                        
  32.                                 }
  33.                                         Console.Read();
  34.                         }
复制代码

作者: 刘晓    时间: 2013-6-22 15:42
刘晓 发表于 2013-6-22 14:19
第一题结果:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
素数和为:106 ...

好吧,那我不上传相片了。直接给你复制第二题的结果。
2 5 9 10 31 48 59 69 95 154
2
5
  0
   0
    31
     0
      59
       0
        0
         0
作者: .netNo1    时间: 2013-6-22 16:05
  1. int length = 0; //杨辉三角形的长度

  2.                         Console.Write("输入杨辉三角长度");
  3.                         length = Convert.ToInt32(Console.ReadLine()); //指定杨辉三角的长度

  4.                         int[][] a = new int[length][]; //二维数组
  5.                         for (int i = 0; i < a.Length; i++)
  6.                         {
  7.                                 a[i] = new int[i + 1];//遍历,赋值增量
  8.                         }
  9.                         for (int j = 0; j < a.Length; j++)
  10.                         {
  11.                                 a[j][0] = 1; //把第一列的元素都赋1
  12.                                 a[j][j] = 1;//把第一列最右边的元素都赋1
  13.                                 for (int m = 1; m < a[j].Length - 1; m++)
  14.                                 {
  15.                                         a[j][m] = a[j - 1][m - 1] + a[j - 1][m];//其余的值由杨辉公式计算
  16.                                 }
  17.                         }
  18.                         for (int i = a.Length - 1; i >= 0; i--)//遍历数组输出杨辉三角形
  19.                         {
  20.                                 for (int b = 0; b < a.Length - a[i].Length; b++)
  21.                                 {
  22.                                         Console.Write("\0");  //输出空格
  23.                                 }
  24.                                 for (int j = a[i].Length - 1; j >= 0; j--)
  25.                                 {
  26.                                         Console.Write("{0}\0", a[i][j]);
  27.                                 }
  28.                                 Console.Write("\n");  //换行

  29.                         }
  30.                         Console.Read();
  31. [img]桌面/三角[/img]
复制代码

作者: 刘晓    时间: 2013-6-22 16:11
刘晓 发表于 2013-6-22 15:42
好吧,那我不上传相片了。直接给你复制第二题的结果。
2 5 9 10 31 48 59 69 95 154
2

:sleepy:我错了。。。
作者: 杨彬    时间: 2013-6-22 19:14
  1. /*1. 题目打印输出一百以内的素数的累加和...*/

  2. /*
  3. * 思路:首先利用循环(1-100)检验每一个数是否是素数
  4. *                 如果是  累加到一个表示和的变量里面
  5. */
  6. public class Test1 {
  7.         public static void main(String[] args) {

  8.                 // boo这个变量值为true表示是素数
  9.                 boolean boo = true;

  10.                 // sum用来记录给定范围的所有素数的和的变量
  11.                 int sum = 0;
  12.                
  13.                 // 外层循环用来控制个数
  14.                 System.out.println("1~100所有的素数:");
  15.                 for (int i = 2; i <= 100; i++) {
  16.                         // 内层循环确定是否为素数
  17.                         // 根据素数的定义 :在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数为素数 所以找到不是素数的数,然后输出即可
  18.                         for (int j = 2; j < i; j++) {// 循环判断小于自己的数能否被整除
  19.                                
  20.                                 if (i % j == 0) { // 如果能被整除 则表示不是素数
  21.                                         boo = false;// 更改标记
  22.                                         // 如果程序周到此处 就证明当前这个数不是素数 可以停止循环
  23.                                         break;
  24.                                 }
  25.                         }
  26.                        
  27.                         if (boo) { //判断标记的是否是素数 如果是素数则求和并打印这个数
  28.                                 sum += i;
  29.                                 System.out.print(i + " ");
  30.                         }
  31.                         boo = true;//改回标记用于下次使用
  32.                 }

  33.                 System.out.println();
  34.                 System.out.println("1~100的素数的和是:" + sum);

  35.         }
  36. }
复制代码
  1. /*2. 将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。*/
  2. /*
  3. *思路:首先采用一种排序算法将数组进行排序
  4. *              然后对排序后的数组的每一个元素进行素数条件检测  检测到是素数  清零
  5. *              最后 阶梯打印该数组
  6. */
  7. public class Test2 {
  8.         public static void main(String[] args) {

  9.                 int[] arr0 = { 2, 1, 4, 66, 8, 3, 11 };
  10.                 System.out.print("原数组:");
  11.                 printArry(arr0);// 打印数组元素方法
  12.                 System.out.println();

  13.                 sort(arr0);// 对数组进行排序
  14.                 System.out.print("改变前:");
  15.                 printArry(arr0);
  16.                 System.out.println();

  17.                 primeToZero(arr0);// 遍历数组并置换为 并改写成0
  18.                 System.out.print("改变后:");
  19.                 printArry(arr0);
  20.                 System.out.println();

  21.                 //阶梯状打印数组元素
  22.                 tiXingPrintArry(arr0);
  23.         }

  24.         // 阶梯状打印数组元素 ---实际上在对角线上进行数组元素的打印---打印三角形
  25.         private static void tiXingPrintArry(int[] arr) {
  26.                 // 外层循环控制打印的行数
  27.                 // ---由于一个元素占据一行 所以 一共打印的行数就是数组中元素的个数
  28.                 for (int i = 0; i < arr.length; i++) {

  29.                         for (int j = 0; j <= i + 1; j++) {

  30.                                 if (i == j)// 这个就相当于判断是不是 第1行第1个...或第n行第n个
  31.                                         System.out.print(arr[i]);
  32.                                 else
  33.                                         System.out.print(" ");
  34.                         }

  35.                         System.out.println();
  36.                 }
  37.         }

  38.         // 打印数组
  39.         private static void printArry(int[] arr) {
  40.                 for (int x : arr) {
  41.                         System.out.print(x + " ");
  42.                 }
  43.         }

  44.         // 对数组中的素数进行清零 先遍历再判断
  45.         private static void primeToZero(int[] arr) {
  46.                 for (int x = 0; x < arr.length; x++) {
  47.                         if (isPrime(arr[x]))// 此方法返回布尔类型进行判断 判断是否为素数
  48.                                 arr[x] = 0;// 元素清零
  49.                 }
  50.         }

  51.         // 判断一个数是否为素数
  52.         private static boolean isPrime(int num) {
  53.                 boolean boo = true;// boo这个变量值为true表示是素数
  54.                 // 根据素数的定义 :在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数为素数 所以找到不是素数的数即可
  55.                 for (int i = 2; i < num; i++) {
  56.                         if (num % i == 0) { // 如果能被整除 整除标记boo标记为false 表示不是素数
  57.                                 boo = false;
  58.                                 // 如果程序周到此处 就证明当前这个数不是素数 可以跳出循环
  59.                                 break;
  60.                         }
  61.                         // 是素数则返回true
  62.                         boo = true;
  63.                 }
  64.                 return boo;
  65.         }

  66.         // 对数组进行选择排序
  67.         private static void sort(int[] arr) {
  68.                 // 遍历数组外层控制个数
  69.                 for (int x = 0; x < arr.length; x++) {
  70.                         for (int y = 0; y < arr.length - 1; y++) {
  71.                                 // 判断大小
  72.                                 if (arr[y] > arr[y + 1]) {
  73.                                         // 交换
  74.                                         int temp = arr[y];
  75.                                         arr[y] = arr[y + 1];
  76.                                         arr[y + 1] = temp;
  77.                                 }
  78.                         }
  79.                 }
  80.         }
  81. }
复制代码
  1. /*3.倒序杨辉三角*/
  2. import java.util.ArrayList;
  3. public class Test3 {
  4.         public static void main(String[] args) {
  5.                 int layers =4;
  6.                 //Step1. 产生杨辉三角列表
  7.                 ArrayList<ArrayList<Integer>> yanghuiTrList = generateYangTrList(layers);
  8.                 System.out.println("产生的杨辉列表如下:");
  9.                 printYanghuiList(yanghuiTrList);
  10.                
  11.                 //Step2.倒序打印杨辉三角
  12.                 System.out.println("倒序打印杨辉三角如下:");
  13.                 printInverseYanghuiArr(layers, yanghuiTrList);
  14.         }
  15.        
  16.         /**
  17.          * function: 倒序打印杨辉三角
  18.          * @param layers ---表示杨辉三角的层数
  19.          * @param yanghuiTrList ----杨辉三角的列表
  20.          */
  21.         private static void printInverseYanghuiArr(int layers,
  22.                         ArrayList<ArrayList<Integer>> yanghuiTrList) {
  23.                 //Step1. 控制打印的行数
  24.                 for(int i=1, layer =layers-1; i<=layers; i++, layer--){
  25.                         //先打印空格部分  填充空白区域
  26.                         for(int j=1; j<= i-1; j++){
  27.                                 System.out.print(" ");
  28.                         }
  29.                        
  30.                         //取出本层的杨辉数字列表
  31.                         ArrayList<Integer> eachLayerList =yanghuiTrList.get(layer);
  32.                        
  33.                         int index =0;
  34.                         for(int j=1; j<=9 -2*i; j++){
  35.                                 if(j%2 ==0)//隔一位打印一个数字
  36.                                         System.out.print(" ");
  37.                                 else{
  38.                                         System.out.print(eachLayerList.get(index));
  39.                                         index++;
  40.                                 }
  41.                         }
  42.                         System.out.println();
  43.                 }
  44.         }
  45.        
  46.         //打印杨辉列表  -- 测试使用
  47.         private static void printYanghuiList(
  48.                         ArrayList<ArrayList<Integer>> yanghuiTrList) {
  49.                 System.out.println("**************************************");
  50.                 for(int i=0; i<yanghuiTrList.size(); i++){
  51.                         for(int j=0; j<yanghuiTrList.get(i).size(); j++){
  52.                                 System.out.print(yanghuiTrList.get(i).get(j)+ " ");
  53.                         }
  54.                         System.out.println();
  55.                 }
  56.                 System.out.println("**************************************");
  57.         }

  58.         //产生杨辉三角列表  方法的参数表示产生几层杨辉三角
  59.         private static ArrayList<ArrayList<Integer>> generateYangTrList(int layers) {
  60.                 ArrayList<ArrayList<Integer>> trList =new ArrayList<ArrayList<Integer>>();
  61.                 ArrayList<Integer> eachLayerList =null;
  62.                 //顺序产生各层杨辉列表
  63.                 for(int i=0; i<layers; i++){
  64.                         eachLayerList =new ArrayList<Integer>();
  65.                        
  66.                         //第0层杨辉列表: 1
  67.                         if(i==0){
  68.                                 eachLayerList.add(1);
  69.                                 trList.add(eachLayerList);
  70.                                 continue;
  71.                         }
  72.                        
  73.                         //第1层杨辉列表: 1  1
  74.                         if(i==1){
  75.                                 eachLayerList.add(1);
  76.                                 eachLayerList.add(1);
  77.                                 trList.add(eachLayerList);
  78.                                 continue;
  79.                         }
  80.                        
  81.                         //第0, 1层以外的杨辉列表
  82.                         //--每层杨辉列表的首数字都为1
  83.                         eachLayerList.add(1);
  84.                        
  85.                         //取出最后一次的杨辉列表  一共下面累加获得本层的杨辉列表的元素
  86.                         ArrayList<Integer> lastList =trList.get(trList.size()-1);
  87.                        
  88.                         //累加上一层的相邻两个元素进行求和
  89.                         for(int startIndex =0; startIndex <lastList.size() -1; startIndex++){
  90.                                 int adjacentSum =lastList.get(startIndex)+ lastList.get(startIndex+1);
  91.                                 eachLayerList.add(adjacentSum);
  92.                         }
  93.                         //--每层杨辉列表的尾数字都为1
  94.                         eachLayerList.add(1);
  95.                        
  96.                         trList.add(eachLayerList);
  97.                 }
  98.                 return trList;
  99.         }
  100. }
复制代码

作者: majunm    时间: 2013-6-22 19:27
  1. package ma.jun;
  2. //第2题答案[code]package ma.jun;
  3. //第1题答案
  4. public class SumDemo {

  5.         /**
  6.          * 1. 打印输出一百以内的素数的累加和...
  7.          *
  8.          * ===========================================================
  9.          *                                                 运行结果
  10.          * ===========================================================
  11.          *        100以内素数有:2
  12.                 100以内素数有:3
  13.                 100以内素数有:5
  14.                 100以内素数有:7
  15.                 100以内素数有:11
  16.                 100以内素数有:13
  17.                 100以内素数有:17
  18.                 100以内素数有:19
  19.                 100以内素数有:23
  20.                 100以内素数有:29
  21.                 100以内素数有:31
  22.                 100以内素数有:37
  23.                 100以内素数有:41
  24.                 100以内素数有:43
  25.                 100以内素数有:47
  26.                 100以内素数有:53
  27.                 100以内素数有:59
  28.                 100以内素数有:61
  29.                 100以内素数有:67
  30.                 100以内素数有:71
  31.                 100以内素数有:73
  32.                 100以内素数有:79
  33.                 100以内素数有:83
  34.                 100以内素数有:89
  35.                 100以内素数有:97
  36.                 100以内素数和为:1060
  37.          */
  38.         public static void main(String[] args) {
  39.                 primeSum();       
  40.         }
  41. //判断 100之内的素数
  42.         public static void primeSum() {
  43.                 int sum = 0;
  44.                 for (int i = 2; i <= 100; i++) {
  45.                         int j;
  46.                        
  47.                         for (j = 2; j <= i-1; j++) {
  48. //                                拿要循环的数i 从2开始 除以 i-1之间的所有数 能整除代表不是素数
  49.                                 if (i % j == 0){
  50.                                         break;
  51.                                         }
  52.                         }
  53.                         if (j >= i) {
  54.                                 System.out.println("100以内素数有:"+i);
  55.                                 sum+=i;                       
  56.                         }
  57.                 }
  58.                 System.out.println("100以内素数和为:" + sum);
  59.         }

  60. }
复制代码
第3题研究中....
public class PrintPrimeDemo {

        /**
         * 将该数组由小到大进行排列,数组中的素数全部赋值为零,并 按阶梯状输出。
         *
            数组:  2   5    9    10   48     95   154     31  59    69
            
                                                            运行结果
            
            ===============================================================
            
                    排序前:
                        arr[2,5,9,10,48,95,154,31,59,69]
                        排序后:
                        arr[2,5,9,10,31,48,59,69,95,154]
                        替换素数后:
                        arr[0,0,9,10,0,48,0,69,95,154]
                        按规则输出后:
                        0
                         0
                          9
                           10
                            0
                             48
                              0
                               69
                                95
                                 154
                  
         */
        public static void main(String[] args) {
                int[] arr={2,5,9,10,48,95,154,31,59,69};
                System.out.println("排序前:");
                printArr(arr);
               
                sortArr(arr);//进行数组排序
               
                System.out.println("排序后:");
                printArr(arr);//排序后
               
                replacePrime(arr);//替换素数
               
                System.out.println("替换素数后:");
                printArr(arr);
               
                System.out.println("按规则输出后:");
                ruleOutArr(arr);//按规则输出
        }
        //替换 素数   4
        public static void replacePrime(int arr[]){
                for(int x=0;x<arr.length;x++){
                        int j;
                        for(j=2;j<arr[x];j++){
                                if(arr[x]%j==0){
                                        break;
                                }
                        }
                        if(j>=arr[x]){
//                                把0赋值给 x; 即素数
                                arr[x]=0;
                        }
                }
        }
//        排序数组
        public static void sortArr(int arr[]){
                for(int x=0;x<arr.length;x++){                       
                        for(int y=x+1;y<arr.length;y++){
                                if(arr[x]>arr[y]){
//                                        数值替换
                                        int temp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=temp;
                                }
                        }
                }
        }
//        打印数组
        public static void printArr(int arr[]){
                System.out.print("arr[");
                for(int x=0;x<arr.length;x++){
                        if(arr[x]==arr[arr.length-1])
                                System.out.print(arr[x]+"]");
                        else
                                System.out.print(arr[x]+",");
                }
                System.out.println();
        }
//         规则输出数组
        public static void ruleOutArr(int arr[]){
               
                for(int x=0;x<arr.length;x++){
                       
                        for(int y=0;y<x;y++){
                                System.out.print(" ");//打印空格
                        }
                        System.out.println(arr[x]);
                }
        }
}[/code]
作者: liye20110    时间: 2013-6-22 20:40

  1. <P>/*第一题代码*/</P>
  2. <P>class PrimeNum
  3. {
  4. public static void main(String[] args)
  5. {
  6. int sum =2;//2是最小的素数,可省略判断
  7. int flag=0;//是否为素数的标志位

  8. for(int num=3;num<=100;num++)//从3开始判断是否为素数
  9. {

  10. for(int j=2;j<num;j++)//遍历num是否可以整除2到num-1之间的数
  11. {
  12. if(num%j!=0)
  13. {
  14. flag=1;//素数
  15. }
  16. else
  17. {
  18. flag=0;//非素数
  19. break;//非素数跳出内循环j
  20. }
  21. }

  22. if(flag==1)//如果是素数
  23. {
  24. sum+=num;//素数累加
  25. //System.out.println(num);//打印素数
  26. }

  27. }
  28. System.out.println("sum="+sum);//打印素数累加和

  29. }
  30. } </P>
复制代码

  1. <P>/*第二题代码*/</P>
  2. class SortNum
  3. {
  4. public static void main(String[] args)
  5. {
  6. int[] arr = {2,5,9,10,48,95,154,31,59,69};
  7. System.out.print("数组打印前:");
  8. for(int i=0;i<arr.length;i++)
  9. {
  10. System.out.print(arr[i]+" ");//打印原数组
  11. }
  12. System.out.println();//换行

  13. int temp;//中间变量
  14. int flag=0;//素数标志位
  15. System.out.print("数组打印后:");
  16. for(int i=0;i<arr.length;i++)
  17. {
  18. for(int j=i+1;j<arr.length;j++)//将数组元素按从小到大顺序排序
  19. {
  20. if(arr[i]>arr[j])
  21. {
  22. temp=arr[i];
  23. arr[i]=arr[j];
  24. arr[j]=temp;
  25. }
  26. }

  27. if(arr[i]==2)
  28. {
  29. flag=1;//素数
  30. }

  31. for(int j=2;j<arr[i];j++)//遍历num是否可以整除2到num-1之间的数
  32. {
  33. if(arr[i]%j!=0)
  34. {
  35. flag=1;//素数
  36. }
  37. else
  38. {
  39. flag=0;//非素数
  40. break;//非素数跳出内循环j
  41. }
  42. }

  43. if(flag==1)//如果是素数
  44. {
  45. arr[i]=0;//将素数赋为0
  46. //System.out.println(num);//打印素数
  47. }
  48. System.out.print(arr[i]+" ");//打印改变后的数组
  49. }

  50. for(int i=0;i<arr.length;i++)//将数组打印成阶梯状
  51. {
  52. for(int j=0;j<i;j++)
  53. {
  54. System.out.print(" ");
  55. }
  56. System.out.println(arr[i]);
  57. }
  58. }


  59. }
复制代码

primenum.jpg (10.33 KB, 下载次数: 0)

1到100内的素数

1到100内的素数

SortNum.jpg (18.45 KB, 下载次数: 0)

排序打印

排序打印

作者: xuluheng718    时间: 2013-6-22 20:50
第一题代码:

结果:


作者: xuluheng718    时间: 2013-6-22 20:54
晕,贴成图片了,
第一题代码附上:
  1. <p>public class Ques1 {</p><p> /**
  2.   * 分析和思路:
  3.   * 1,什么事素数:在大于1的自然数中,只能被1和自身整除的数叫素数
  4.   * 2,如何求出100以内的素数有哪些:
  5.   *   ①因为涉及到两个数值的循环操作所以用嵌套for循环实现
  6.   *   ②外循环求出2-100的自然数,内循环求出不能被除了1和自身整除的素数
  7.   *   ③内循环的循环数值设为和外循环数值相等,内循环数值每循环一次自减1,
  8.   *   因为任何自然数都能被1整除所以内循环的除数可以设为>=2的自然数
  9.   *   ④假如要求的数值能被小于它自身的数值整除,那么直接跳出内循环,进行下一次外循环
  10.   *   ⑤假如内循环数值到了最小值2还没跳出内循环,那么就得出此数值属于素数,然后进行累加求和
  11.   *   
  12.   */
  13. public static void main(String[] args) {
  14.   
  15.   int sum = 0;//记录和
  16.   for(int i = 2; i<=100; i++)
  17.   {
  18.    for(int j = i;j>=2;j--)
  19.    {
  20.     if((i%j==0)&&(i!=j))//要求的数能被整除,并且除数不等于自身则跳出次循环
  21.     break;
  22.     if(j==2)//到达最小值还没满足以上条件,得出素数
  23.     {
  24.      sum = sum+i;//进行素数和的累加
  25.     }
  26.    }
  27.   }
  28.   System.out.println("100以内的素数和为:"+sum);</p><p> }</p><p>}</p>
复制代码
运行结果:


作者: xuluheng718    时间: 2013-6-22 20:56
第二题代码附上:
  1. <p>public class Ques2 {</p><p> /**
  2.   * 思路:
  3.   * 1,先进行冒泡排序
  4.   * 2,把排序后的数组进行素数判断,把素数和0进行替换
  5.   * 3,阶梯打印数组:每打印一个数组中的元素换行一次,每换行一次多打印一个空格
  6.   */
  7. public static void main(String[] args) {
  8.   // TODO Auto-generated method stub
  9.   int[] arry ={2,5,9,10,48,95,154,31,59,69};
  10.   sort(arry);//进行冒泡排序
  11.   System.out.print("数组改变前:");
  12.   print(arry);//打印排序后的数组
  13.   System.out.println();
  14.   System.out.print("数组改变后:");
  15.   replacePrime(arry);//把数组的中的素数替换成0
  16.   print(arry);//打印替换后的数组
  17.   System.out.println();
  18.   System.out.println("输出数组:");
  19.   augmentPrint(arry);//阶梯打印数组
  20. }
  21. /*
  22.   * 打印数组
  23.   */
  24. public static void print(int[] arry)
  25. {
  26.   for(int i = 0;i<arry.length;i++)
  27.   {
  28.    System.out.print(arry[i]);
  29.    System.out.print("\t");
  30.   }
  31. }
  32. /*
  33.   * 进行冒泡排序,并把数组中的素数替换成0
  34.   */
  35. public static void sort(int[] arry)
  36. {
  37.   for(int i =arry.length-1;i>0;i--)
  38.   {
  39.    for(int j =0;j<i;j++)
  40.    {
  41.     if(arry[j]>arry[j+1])
  42.     {
  43.      int temp = arry[j];
  44.      arry[j] = arry[j+1];
  45.      arry[j+1] = temp;
  46.     }
  47.    }
  48.    
  49.   }
  50. }
  51. /*
  52.   * 阶梯状输出数组
  53.   */
  54. public static void augmentPrint(int[] arry)
  55. {
  56.   for(int i = 0; i<arry.length;i++)
  57.   {
  58.    for(int j = i;j>0;j--)
  59.    {
  60.     System.out.print(" ");
  61.    }
  62.    System.out.println(arry[i]);
  63.   }
  64. }
  65. /*
  66.   * 判断值是否为素数,假如是则替换成0,否则不改变
  67.   */
  68. public static void replacePrime(int[] arry)
  69. {
  70.   for(int i = 0;i<arry.length;i++)
  71.   {
  72.    for(int j = arry[i]-1;j>=2;j--)
  73.    {
  74.     if(arry[i]%j==0)
  75.     {
  76.      arry[i]=0;
  77.      break;
  78.     }
  79.    }
  80.   }
  81. }</p><p>}
  82. </p><p> </p>
复制代码
运行结果:


作者: xuluheng718    时间: 2013-6-22 21:14
第三题代码附上:
  1. import java.util.Scanner;


  2. public class Ques3 {

  3.         /**
  4.          * 思路分析:
  5.          * 1,如何实现杨辉三角
  6.          *         <1>分析图形:
  7.          *                 ①每行的元素个数等于行数。
  8.          *                 ②每行中元素的头和尾都是1。
  9.          *                 ③除了第一第二行和每行的头尾元素外,第二个元素的值是其上一行的相邻元素的和,以此类推。
  10.          *         <2>确定数据结构:
  11.          *                 ①通过分析,这里可以使用二位数组来实现,第一维度用来记录行数与其相关的元素个数。
  12.          *                 ②建立一个不规则的二位数组,第一维度的长度(打印的行数)通过键盘录入。
  13.          *                 ③因为第二维度的元素个数取决于第一维度,所以可以通过循环给第一维度相对应的元素个数赋值。
  14.          *                 ④当二维数组的第一和第二维的大小都确定了就可以给每个元素进行赋值了。
  15.          *         <3>如何存入数据:
  16.          *                 ①用嵌套循环可以实现二位数组的数据存储
  17.          *                 ②用此二位数组的第一维度确定外循环的次数
  18.          *                 ③根据第一维度的长度确定第二维度的长度
  19.          *                 ④根据分析图形得到的数据之间的关系,当第二维度的下标为头尾时候都是1,可以通过判断第二维度的
  20.          *                 下标来实现赋值。
  21.          *                         int[][] arry = new int[i][j];
  22.          *                         if(j==0||j==arry.length-1)
  23.          *                         arry[i][j]=1;
  24.          *                 ⑤第二维度的元素除了头尾外都是上一维的元素相邻的两个值的和,可以定义一个数组下标用于记录当前
  25.          *                 位置,每存储一个数据下标自增1,假如当前的第一维度相对应的第二维度数据存储满了,把记录的下标重置。
  26.          *                         arry[i][j]=arry[i-1][index]+arry[i-1][index+1];
  27.          *                        index++;
  28.          *                       
  29.          * 2,如何实现杨辉三角的倒立打印:
  30.          *        <1>分析图形:
  31.          *                ①这是由数组的第一维度倒着打印实现
  32.          *                ②每打印一行多一个空格,而每打印同一行的元素用2个空格隔开
  33.          *         <2>图形实现:
  34.          *                 ①用3个for循环实现,外循环控制行数,可以用数组的第一维度长度实现。
  35.          *                 因为数组的下标从0开始,所以外循环的条件for(int i = arry.length-1; i>=0; i--)
  36.          *                 ②内嵌2个for循环:
  37.          *                         第一个嵌套循环用于控制横向打印开始的空格数,
  38.          *                                         空格数 = arry.length-元素的个数-1               
  39.          *                         第二个嵌套循环用于控制横向打印的元素。
  40.          *                                 因为数组下标的关系,这里的条件还是要用第二维数组的长度-1
  41.          */
  42.         public static void main(String[] args) {
  43.                 // TODO Auto-generated method stub
  44.                 Scanner in=new Scanner(System.in);
  45.                 System.out.print("请输入行数:");
  46.                 int num=in.nextInt();//读取键盘录入
  47.                
  48.                 //初始化行数
  49.                 int[][] arry = new int[num][];
  50.                
  51.                 //初始化第二维数组的长度
  52.                 for(int i =0;i<arry.length;i++)
  53.                 {
  54.                         arry[i] = new int[i+1];//因为第一维的下标关系,这里要+1
  55.                 }
  56.                
  57.                 int index;//定义下标指针
  58.                
  59.                 //给二位数组赋值
  60.                 for(int i = 0; i<arry.length;i++)
  61.                 {
  62.                         index =0;//给不同维度的数组赋值都要初始化指针
  63.                        
  64.                         //给arry[i]维度下的元素赋值
  65.                         for(int j = 0 ;j<arry[i].length;j++)
  66.                         {
  67.                                 //假如是第二维数组的头尾,那么就把值赋为1
  68.                                 if((j==0)||(j==arry[i].length-1))
  69.                                         arry[i][j]=1;
  70.                                 else
  71.                                 {
  72.                                         //根据杨辉三角的规律,除了头和尾,每个不同维度的值都是上以维度的相邻两个值的和
  73.                                         arry[i][j]=arry[i-1][index]+arry[i-1][index+1];
  74.                                         index++;
  75.                                 }
  76.                         }
  77.                                
  78.                 }
  79.                
  80.                 //倒立打印杨辉三角
  81.                 for(int i = arry.length-1; i>=0; i--)
  82.                 {
  83.                        
  84.                         //打印横向开始时的空格数
  85.                         for(int j = arry.length-i-1;j>0;j--)
  86.                                 System.out.print("\t");
  87.                        
  88.                         //打印每一行的元素(在每一行的元素没打印完前,不换行)
  89.                         for(int k =0;k<=arry[i].length-1;k++)
  90.                         {
  91.                                 System.out.print(arry[i][k]);
  92.                                 System.out.print("\t\t");
  93.                         }
  94.                         //打印完一行,换行
  95.                         System.out.println();
  96.                 }
  97.         }

  98. }
复制代码
运行结果:



作者: xuluheng718    时间: 2013-6-22 21:19
xuluheng718 发表于 2013-6-22 21:14
第三题代码附上:运行结果:

第三题的运行图片没上传成功,补上:



作者: lou413    时间: 2013-6-22 21:22
file:///E:/12.jpg
运行结果
file:///C:/Users/Administrator.PC--20130621GXC/AppData/Roaming/Tencent/Users/1009761314/QQ/WinTemp/RichOle/%7BC]G668OEEK6K%60OHST~41YS.jpg

作者: .netNo1    时间: 2013-6-22 21:34
  1. static void Main(string[] args)
  2.                 {
  3.                         int[] S = { 2, 5, 9, 10, 48, 95, 154, 31, 59, 69 };
  4.                         int min = 0; //中间变量
  5.                        
  6.                         for (int i = 0; i <= S.Length - 1; i++) //比较S.Length-1次排序
  7.                         {
  8.                                 for (int j = 0; j < S.Length - 1; j++)
  9.                                 {
  10.                                         if (S[j] > S[j + 1])
  11.                                         {
  12.                                                 min = S[j]; //交换变量,由小到大排列
  13.                                                 S[j] = S[j + 1];
  14.                                                 S[j + 1] = min;
  15.                                         }
  16.                                 }
  17.                         }
  18.             int m;
  19.             for (int a = 0; a < S.Length; a++)
  20.             {
  21.                 for (m = 2; m <= S[a]; m++)
  22.                 {
  23.                     if (S[a] % m == 0 && S[a] != 2)
  24.                         break;
  25.                 }
  26.                 if (S[a] == m)  //为素数,则赋值0
  27.                     S[a] = 0;
  28.                 Console.Write("{0}", S[a]);
  29.                 Console.Write("\n");
  30.                 for (int b = 0; b <= a; b++)  //输出空格
  31.                 {
  32.                     Console.Write("\0");
  33.                 }
  34.             }
  35.                         Console.ReadKey();
  36.                 }//结果为:2 0 9 10 0 48 0 69 95 154
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2