A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Just_Only 高级黑马   /  2013-6-23 01:46  /  7135 人查看  /  71 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Just_Only 于 2013-6-29 20:41 编辑

{:soso__4011813854091704040_4:}为了能兼顾技术好点的和刚学习不久的,题目分为三个等级

要求:
      1.题目要自己做出来,要写明思路和步骤(可以合在一起)
      2.将程序写的清晰明了.注释到位.
      3.回复的时候把代码贴出来,和运算后结果的图片,
         不会弄图片的贴出结果来,不要蒙混过关,我会检查的,不合格者不给于技术分哦
      4. 需要写出完整代码,不要用几句术语草草了事。
      5.代码放到代码块中,不要压缩包(压缩包没分)
      6.要写注释,没注释的没分...
      7.对于本次活动的题目或是加分,存在异议的可以联系我。。。有奖励的哦...
加分说明:
             题目分为三个等级然后给予相应的分,全部做得四分,简单的各一分,做一半得三分,然后根据答题的排版和格式或是答题个数会酌情的给予特殊的奖励。
附加:      
       对于简单的题目或是一般的题目我想大神们都懂滴,那么就不要凑热闹的啦!!!每周日更新(持续几周不定)
       不说多的啦,上题目的啦,大家踊跃参加的啊,你的支持是我们服务的最大动力哦。
简单:
      1.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
      2.有五个人坐在一起,问第五个人是多少岁,他说比第四个人大两岁。问第四个人是多少岁,他说比第三个人大两岁。问第三个人是多少岁,他又说比第二个人大两岁.,问第二个人,他又说比第一个人大两岁。问最后一个人,他只是说10岁,请问第五个人多大。

一般:
      1.一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,求它在第10次落地时,共进过多少米?第十次反弹多高?
      2.有1,2,3,4四个数字,能组成多少个互不相同的且没有重复数字的三位数,都是多少,并且将所得的三位数按升序排列并打印。

较难:
      1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;
      2.输入两个正整数m和n,求其最大公约数和最小公倍数。
由于评分标准的更改,给大家带来的不便,请大家谅解,由于经验不足,有考虑不周的地方,希望大家谅解。

评分

参与人数 2技术分 +1 黑马币 +8 收起 理由
张勇1993 + 1 + 5 很给力!
神之梦 + 3 赞一个!

查看全部评分

71 个回复

倒序浏览
哈哈...长这么大以来第一次  沙发
回复 使用道具 举报
本帖最后由 卢祥洲 于 2013-6-23 15:06 编辑

楼主重新审核下啊!
  1. /*
  2. 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  3. */
  4. public class SumDemo{
  5.         public static void main(String[] args){
  6.                         System.out.println("sum为:"+sumFunction(20));
  7.         }
  8.         //定义求和函数
  9.         public static float sumFunction(int n){
  10.                 //第一步、数据准备
  11.                 float sum = 0;
  12.                 float j = 2;
  13.                 //第二步、for循环求和,其中i为分子,j为分母
  14.                 for(int i=1;i<=n;i++){
  15.                                 sum = j/i+sum;
  16.                                 System.out.println(sum);
  17.                                 j = j+i;
  18.                 }       
  19.                 //第三步、返回和值
  20.                 return sum;
  21.         }
  22. }
复制代码


回复 使用道具 举报

public class Test0 {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  int num, denom;  //定义分子和分母
  int a,b;
  double sum;  //和
  
  a = 2;   //定义初始值
  b = 1;
  
  sum = (double)a/b;
  //放到循环中进行计算
  for ( int i=1; i<24; i++ )
  {
   num = a + b;
   denom = a;
  
   sum = sum + (double)num/denom;
  
   a = num;
   b = denom;
  }
      
  //取小数点后两位
  sum = sum*100;
  sum = sum + 0.5;
  sum = (int)sum;
  sum = (double)sum/100;
  //打印结果
  System.out.printf("这些数的和= %f\n",sum);
}
}
版主辛苦了,请您检阅

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

0.png
回复 使用道具 举报
  1. /*
  2.         1.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  3. 思路:
  4.         1.由着几个数可以看出,分子和分母都是累加规律, 分子从二开始,分母从1开始,
  5.         2.定义分子变量num1,分母变量num=1; 计数器 count=0;
  6.                 还有一个累加的和sum,因为没怎么学过分数怎么表示,所以就用小数形式表示了.
  7.         3.使用for循环进行计算,结束条件是count<20;
  8. */
  9. class Demo
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 //定义变量
  14.                 int num = 1;//分母
  15.                 int num1 = 2;//分子
  16.                 int count ;//计数器
  17.                 double sum = 0;//累加和

  18.                 for (count=0; count<20;count++ )
  19.                 {
  20.                         sum=sum+((num1+count)/(num+count));//求和运算,sum和sum1都需要进行自身的累加.
  21.                 }
  22.                 System.out.println("sum="+sum);//输出打印
  23.         }
  24. }
复制代码

QQ图片20130623075636.jpg (5.48 KB, 下载次数: 0)

运行结果

运行结果
回复 使用道具 举报
简单:
1.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  1. //题目1:有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  2. //1,2,3,5,8..为斐波那契数列
  3. public class Test01 {
  4.         public static void main(String args[]){
  5.                 double sum = getSum(20);
  6.                 System.out.println(sum);
  7.         }
  8.         //定义求和方法
  9.         public static double getSum(int i){
  10.                 String output ="";
  11.                 double sum = 0;
  12.                 int j = i+2;
  13.                 for(i=3;i<=j;i++) {
  14.                         sum += fibonacci(i)/fibonacci(i-1); //求和       
  15.                         output += (int)fibonacci(i)+"/"+(int)fibonacci(i-1)+ "+";//输出控制表达式
  16.                 }
  17.                 System.out.print(output.substring(0, output.length()-1)+ "=");//打印表达式
  18.                 return sum;
  19.         }
  20.         //求斐波那契(fibonacci)数列
  21.         public static double fibonacci(int pos) {
  22.                 if(pos==1||pos==2) {
  23.                         return 1;
  24.                 }else {
  25.                         return fibonacci(pos-1)+fibonacci(pos-2);
  26.                 }
  27.         }
  28. }
复制代码
2.有五个人坐在一起,问第五个人是多少岁,他说比第四个人大两岁。问第四个人是多少岁,他说比第三个人大两岁。问第三个人是多少岁,他又说比第二个人大两岁。问最后一个人,他只是说10岁,请问第五个人多大。
  1. //题目2:有五个人坐在一起,问第五个人是多少岁,他说比第四个人大两岁。问第四个人是多少岁,他说比第三个人大两岁。问第三个人是多少岁,他又说比第二个人大两岁。问最后一个人,他只是说10岁,请问第五个人多大。
  2. //这是一个递归,但递归效率比较低,所以我同时考虑了for
  3. public class Test02 {
  4.         public static void main(String args[]){
  5.                 int x = fun1(5);
  6.                 System.out.println("方法一:"+x);
  7.                 int y = fun2(5);
  8.                 System.out.println("方法二:"+y);
  9.         }
  10.         //采用递归
  11.         public static int fun1(int n){
  12.                 int x = 0;
  13.                 if(n>1){
  14.                         x = fun1(n-1)+2;
  15.                 }else if(n==1){
  16.                         x = 10;
  17.                 }
  18.                 return x;
  19.         }
  20.         //采用for循环
  21.         public static int fun2(int n){
  22.                 int x = 0;
  23.                 for(int i=0;i<n;i++){
  24.                         x = 10 + (n-1)*2;
  25.                 }
  26.                 return x;
  27.         }
  28. }
复制代码
一般:
      1.一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,求它在第10次落地时,共进过多少米?第十次反弹多高?
  1. //中等题目1:一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,求它在第10次落地时,共进过多少米?第十次反弹多高?
  2. //可以采用递归或者for循环
  3. public class GeneralTest1 {
  4.         public static void main(String args[]){
  5.                 System.out.println("第10次落地反弹高度:"+fun1(10)+"米");
  6.                 double sum = 0;
  7.                 //采用for循环求出总共进过多少米
  8.                 for(int i=0;i<=10;i++){
  9.                         sum += fun1(i);
  10.                 }
  11.                 System.out.println("10次落地共进过:"+sum+"米");
  12.         }
  13.         //采用递归球反弹高度
  14.         public static double fun1(int n){
  15.                 double height = 0;
  16.                 if(n==0){
  17.                         height = 100;
  18.                 }else if(n>0){
  19.                         height = fun1(n-1)/2;
  20.                 }
  21.                 return height;
  22.         }
  23. }
复制代码
2.有1,2,3,4四个数字,能组成多少个互不相同的且没有重复数字的三位数,都是多少,并且将所得的三位数按升序排列并打印。
  1. //中等题目2:有1,2,3,4四个数字,能组成多少个互不相同的且没有重复数字的三位数,都是多少,并且将所得的三位数按升序排列并打印。
  2. public class GeneralTest2 {
  3.         public static void main(String args[]){
  4.                 int count = 0;
  5.                 //采用for循环,组成多少个互不相同的且没有重复数字的三位数
  6.                 for(int a=1;a<=4;a++){
  7.                         for(int b=1;b<=4;b++){
  8.                                 for(int c=1;c<=4;c++){
  9.                                         if(a!=b&&a!=c&&b!=c){
  10.                                                 count++;
  11.                                                 //按升序排列并打印
  12.                                                 System.out.println(a*100+b*10+c);
  13.                                         }                                       
  14.                                 }
  15.                         }
  16.                 }
  17.                 System.out.println("一共有"+count+"位");
  18.         }
  19. }
复制代码
较难:
      1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;
  1. //较难题目1:将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5
  2. public class HardTest1 {
  3.         public static void main(String args[]){
  4.         fun1(90);
  5.         }
  6.         //整数分解质因数
  7.         public static void fun1(int num){
  8.                 int k = 2;
  9.         System.out.print(num + "=");
  10.         while (num > k) {
  11.             if (num % k == 0) {
  12.                 System.out.print(k + "×");
  13.                 num = num / k;
  14.             }else{
  15.                 k++;
  16.             }
  17.         }
  18.         System.out.println(k);
  19.         }
  20. }
复制代码
2.输入两个正整数m和n,求其最大公约数和最小公倍数。
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;

  4. //较难题目2:输入两个正整数m和n,求其最大公约数和最小公倍数。
  5. public class HardTest2 {
  6.         public static void main(String args[]) throws IOException{
  7.                 int a,b;
  8.                 BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
  9.                 System.out.print("输入第一个正整数:");
  10.                 a=Integer.parseInt(strin.readLine());               
  11.                 System.out.print("输入第二个正整数:");
  12.                 b=Integer.parseInt(strin.readLine());
  13.                 System.out.println("第一个正整数为"+a);
  14.                 System.out.println("第二个正整数为"+b);
  15.                 int c = fun1(a,b);
  16.                 System.out.println("最大公约数为"+c);
  17.                 int d = fun2(a,b,c);
  18.                 System.out.println("最小公倍数为"+d);
  19.         }
  20.         //求最大公约数--其实就是小的除大的得一个余数,一直这样做,做到剩下的两个数字可以整除.那个大的就是
  21.         public static int fun1( int m, int n){
  22.                 if( m < n ) {
  23.                 int temp = n;
  24.                 n = m;
  25.                 m = temp;
  26.             }
  27.             if( m % n == 0 )
  28.                 return n;
  29.             else {
  30.                 m %= n;// m = m%n
  31.                 return fun1( n, m );
  32.             }
  33.         }
  34.         //最大公倍数
  35.         public static int fun2(int m,int n,int a){
  36.                 return m*n/a;
  37.         }
  38.        
  39. }
复制代码
更多图片 小图 大图
组图打开中,请稍候......
回复 使用道具 举报
一般:
      1.一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,求它在第10次落地时,共进过多少米?第十次反弹多高?
由于是求第十次落地时共进多少米,所以这题答案修改为:
  1. //中等题目1:一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,求它在第10次落地时,共进过多少米?第十次反弹多高?
  2. //可以采用递归或者for循环
  3. public class GeneralTest1 {
  4.         public static void main(String args[]){
  5.                 System.out.println("第10次落地反弹高度:"+fun1(10)+"米");
  6.                 double sum = 0;
  7.                 //采用for循环求出总共进过多少米
  8.                 //第10次落地时
  9.                 for(int i=0;i<10;i++){
  10.                         sum += fun1(i);
  11.                 }
  12.                 System.out.println("10次落地时共进过:"+sum+"米");
  13.         }
  14.         //采用递归球反弹高度
  15.         public static double fun1(int n){
  16.                 double height = 0;
  17.                 if(n==0){
  18.                         height = 100;
  19.                 }else if(n>0){
  20.                         height = fun1(n-1)/2;
  21.                 }
  22.                 return height;
  23.         }
  24. }
复制代码

2013-06-23_081249.jpg (11.92 KB, 下载次数: 0)

2013-06-23_081249.jpg

评分

参与人数 1技术分 +4 收起 理由
Just_Only + 4 赞一个!

查看全部评分

回复 使用道具 举报
做了难的再做简单的不会都给分是吗?
回复 使用道具 举报
本帖最后由 Just_Only 于 2013-6-23 11:19 编辑
王靖远 发表于 2013-6-23 10:31
做了难的再做简单的不会都给分是吗?


不是这样的,如果你要做的话,也是可以的,只是我觉得技术好点的简单的可以不用做的。
回复 使用道具 举报
土匪大学生 发表于 2013-6-23 03:23
哈哈...长这么大以来第一次  沙发

答题啊,简单的应该会的吧
回复 使用道具 举报
︶ㄣ紫藤ㄜ︵ 发表于 2013-6-23 07:48
public class Test0 {
/**
  * @param args

请把代码放到添加代码那个框中,或是把排版排一下。
回复 使用道具 举报
  1. import java.util.*;
  2. class Debug5
  3. {
  4. public static void main(String[] args)
  5. {
  6. ArrayList<Integer>list = new ArrayList<Integer>();
  7. list = method_1(90,list);
  8. print(90,list);
  9. }

  10. public static void print(int num,ArrayList<Integer>list)//按指定样式打印
  11. {
  12. StringBuilder sb = new StringBuilder();
  13. sb.append(num+"=");
  14. for(int x=0;x<list.size()-1;x++)
  15. {
  16. sb.append(list.get(x)+"*");
  17. }
  18. sb.append(list.get(list.size()-1)+";");
  19. System.out.println(sb.toString());
  20. }
  21. public static boolean suShu(int i)//定义一个判断是否为素数的方法。
  22. {
  23. int count = 0;
  24. if (i == 1)
  25. return false;
  26. for(int x=1;x<=i;x++)
  27. {
  28. if((i%x)==0)
  29. count++;
  30. }
  31. if(count>2)
  32. return false;
  33. else
  34. return true;

  35. }
  36. public static ArrayList<Integer> method_1(int num,ArrayList<Integer>list)//求因子的方法。
  37. {
  38. int i = 0;

  39. for(int x=2;x<num;x++)//循环找因子
  40. {
  41. if(num%x==0)
  42. {
  43. i = x;
  44. break;
  45. }
  46. }

  47. if(!suShu(num/i))//判断是否为素数,如不是就递归
  48. method_1(num/i,list);//这里用到递归
  49. list.add(i);//把求到的因子添加到集合里。

  50. Iterator<Integer>it = list.iterator();
  51. int z =num;
  52. while(it.hasNext())
  53. {
  54. int in = it.next().intValue();//找最后一个因子。因为之前的循环会漏掉最后一个因子。
  55. z = z/in;
  56. }
  57. if(suShu(z))
  58. list.add(z);
  59. return list;

  60. }

  61. }
复制代码

回复 使用道具 举报
  1. import java.util.*;
  2. class Debug6
  3. {
  4. public static void main(String[] args)
  5. {
  6. printResult(6,8);
  7. }
  8. public static void printResult(int m,int n)//打印方法。
  9. {
  10. int max = 0;
  11. int min = 0;
  12. ArrayList<Integer> list = new ArrayList<Integer>();
  13. list = quChong(m,n);
  14. max = list.get(list.size()-1);
  15. min = m/max*n;
  16. System.out.println(m+"和"+n+"的最大公约数是"+max);
  17. System.out.println(m+"和"+n+"的最小公倍数是"+min);
  18. }
  19. public static ArrayList<Integer> quChong(int m,int n)//对两个数组取相同合并为一个数组,然后去重复排序
  20. {
  21. ArrayList<Integer>newList = new ArrayList<Integer>();
  22. ArrayList<Integer>list1 = new ArrayList<Integer>();
  23. ArrayList<Integer>list2= new ArrayList<Integer>();
  24. list1 = getList(m,list1);
  25. list2 = getList(n,list2);


  26. Iterator<Integer> it = list1.iterator();
  27. while(it.hasNext())
  28. {
  29. Integer integer = it.next();
  30. if(list2.contains(integer) && !newList.contains(integer))
  31. newList.add(integer);
  32. }
  33. Collections.sort(newList);
  34. return newList;
  35. }
  36. public static ArrayList<Integer> getList(int num,ArrayList<Integer>list)//用递归方法获取所有因子。
  37. {
  38. int i = 0;

  39. for(int x=2;x<num;x++)//循环找因子
  40. {
  41. if(num%x==0)
  42. {
  43. i = x;
  44. break;
  45. }
  46. }

  47. if(!suShu(num/i))//判断是否为素数,如不是就递归
  48. getList(num/i,list);//这里用到递归
  49. list.add(i);//把求到的因子添加到集合里。


  50. Iterator<Integer>it = list.iterator();
  51. int z =num;
  52. while(it.hasNext())
  53. {
  54. int in = it.next().intValue();//找最后一个因子。因为之前的循环会漏掉最后一个因子。
  55. z = z/in;
  56. }
  57. if(suShu(z))
  58. list.add(z);
  59. list.add(1);
  60. list.add(num);
  61. return list;
  62. }

  63. public static boolean suShu(int i)//定义一个判断是否为素数的方法。
  64. {
  65. int count = 0;
  66. if (i == 1)
  67. return false;
  68. for(int x=1;x<=i;x++)
  69. {
  70. if((i%x)==0)
  71. count++;
  72. }
  73. if(count>2)
  74. return false;
  75. else
  76. return true;

  77. }
  78. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
Just_Only + 2 很给力!

查看全部评分

回复 使用道具 举报
      1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;
  1. import java.util.Scanner;

  2. public class Demo1 {
  3.         public static void  fen(int num){
  4.                 for(int i=2;i<num/2;i++){//这个数除以从2开始的每一位数,找到最小的可以整除的数后,输出该除数,用相除后的数作为新的参数继续往下找
  5.                         if(num%i==0){         //直到这个数的一半时停下,因为过半后,就会重复
  6.                                 System.out.print(i+"*");
  7.                             fen(num/i);}      //
  8.                 }
  9.                 System.out.print(num);//递归中出来后得到n-1个质因数,最后的第n个质因数不满足循环条件退出,所以这里必须输出
  10.         System.exit(0);//由于递归有回溯的性质,它不会在程序结束时结束,而是回溯完所有的之后才退出,所以当它遍历到最后开始回溯前强制结束
  11.                        //如果少了这句,程序必然出错
  12.         }
  13.         public static void main(String[] args) {
  14.                 Scanner sc=new Scanner(System.in);
  15.                 System.out.println("请输入要分解的数字:");
  16.                 int num=sc.nextInt();//输入要分解的数字,保存在num中
  17.                 System.out.print(num+"=");
  18.                 fen(num);
  19.                
  20.                
  21.         }
  22. }
复制代码

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

11.png

评分

参与人数 1技术分 +1 收起 理由
Just_Only + 1

查看全部评分

回复 使用道具 举报
本帖最后由 ㄗs:/|丶hearts 于 2013-6-23 18:52 编辑

将一个正整数分解质因数
  1. package com.java.test;

  2. import java.util.*;

  3. public class Demo {

  4. /**
  5. * @param args
  6. */
  7. public static void main(String[] args) {
  8. // TODO Auto-generated method stub

  9. System.out.println("请输入一个正整数:");
  10. //从控制台读取输入的数字
  11. Scanner s = new Scanner(System.in);
  12. int i = s.nextInt();
  13. primeNum(i);
  14. }
  15. //将一个正整数分解质因数 并打印
  16. public static void primeNum(int n)
  17. {
  18. int j = 2;
  19. System.out.print(n + "=" );
  20. while(j<= n)
  21. {
  22. //如果该因数等于n,则说明分解质因数的过程已经结束, 打印该因数 并退出while循环
  23. if(j == n)
  24. {
  25. System.out.println(j);
  26. break;
  27. }
  28. //如果n%j==0那么j则是n的因子 又因为j<=n 所以j是n的质因数
  29. if(n % j == 0 )
  30. {
  31. //n能被j整除,则应打印出j的值,并用n除以j的商,作为新的正整数n,重复执行
  32. System.out.print(j + "*");
  33. n = n / j;
  34. }else
  35. {
  36. //n%j != 0 则j++ 继续循环找n的因数
  37. j++;
  38. }
  39. }

  40. }

  41. }
复制代码

2868-593a3658133336224599430c2a9f011c5510.jpg (2.8 KB, 下载次数: 0)

2868-593a3658133336224599430c2a9f011c5510.jpg

4049-9b34b63b164978253ffa59c3c2bbfce61867.jpg (3.95 KB, 下载次数: 0)

4049-9b34b63b164978253ffa59c3c2bbfce61867.jpg

评分

参与人数 1技术分 +1 收起 理由
Just_Only + 1 很给力!

查看全部评分

回复 使用道具 举报
我回来啦,做了一天,有些高估自己了。我会更努力的!


/*
题目:将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;

思路:
1,创建一个Factoring类。
2,每分解一次参数后,判断其是否为素数。若为素数,则表示分解到最小。
3,输入参数x,在运行后有“x的质因数为: x=a*v*c*e”字样显示出来。

步骤:
1,定义Factoring类。包涵有
(1、Prime()方法---判断是否为素数,
(2、PrimeMaking()素数生成器————用来作为短除法的质因数,
(3、Factor()方法。
(4、输出结果方法
2,定义主函数。
public static void main(String[] args)这时固定格式的。
3,为了显示具体字样,可以通过使用输出语句:System.out.println("hello world");

*/
import java.util.*;
class Factoring
{
        static int PrimeValue=1; //用于暂时存储质因数
        public static boolean Prime(int p)//判断参数是否为素数
        {        int b = 2;
                if(p<=3)//1,2,3不用判断
                        return true;
                for(;(p % b != 0);++b){}//只能被自身整除的为素数,是返回true,反之false。
                if(b==p)
                        return true;
                else
                        return false;
        }
        public static int PrimeMaking()//素数生成器
        {       
                do//如果PrimeValue不是素数,就增1,直至为素数。
                {
                        PrimeValue++;
                }while(!Prime(PrimeValue));
                return PrimeValue;       
               
        }
        public static void Factor(int key)//分解质因数,
        {       
                System.out.print("分解质因数得 "+key+" = ");
                while(!Prime(key))//判断key是否为素数,若是则输出1和key,否则执行下去。
                {       
                        int PM=PrimeMaking();//生成一个待判断的 、自增的质因数。
                        if(key%PM == 0)//若key可以整除,则还可以继续分解。
                        {
                                SOP(PM);
                                key=key/PM;
                        //        Factor(key);
                                PrimeValue=1;//初始化下一个质因数。
                        }
                }
                System.out.print(key);
        }
        public static void SOP(Object obj)//输出函数
        {
                System.out.print(obj+"x");
        }

        public static void Make()
        {       
                try
                {
                        int a;
                        Scanner sc=new Scanner(System.in);
                        a=sc.nextInt();////用于存储从键盘获取的整数
                        if(a>0&&a%1==0)
                        {
                                if(!Prime(a))
                                        Factor(a);//如果a是非素数,则调用Factor函数
                                else
                                        System.out.println("分解质因数得 "+a+" = 1x"+a);
                        }
                        else
                        {
                                System.out.println("请输入一个正整数!");
                                a=sc.nextInt();//获取一个数
                        }
                }
                catch(Exception e)
                {
                        System.out.println("请输入一个正整数!");
                }
        }
        public static void main(String[] args)
        {
                Make();               
        }
}


写得不是特别好,还有可以改进的地方。
运行结果截图



评分

参与人数 1技术分 +2 收起 理由
Just_Only + 2 鼓励一下

查看全部评分

回复 使用道具 举报
.输入两个正整数m和n,求其最大公约数和最小公倍数。
  1. class  Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int m=gcd(4,8);
  6.                 int n=lcm(4,8);
  7.                 System.out.println("最大公约数是:"+m);
  8.                 System.out.println("最小公倍数:"+n);
  9.         }
  10.         //用辗转相除法可以求得最大公约数
  11.         static int gcd( int m, int n )//最大公约数
  12.         {
  13.                 if( m < n )
  14.                 {
  15.                         int temp = n;
  16.                         n = m;
  17.                         m = temp;
  18.                 }
  19.                 if( m % n == 0 )
  20.                         return n;
  21.                 else
  22.                 {
  23.                         m %= n;//这里就是辗转相除
  24.                         return gcd( n, m );
  25.                 }
  26.         }
  27.         //最小公倍数 = 两个数的积 / 最大公约数
  28.         static int lcm(int a, int b) //最小公倍数
  29.         {
  30.                 return a*b/gcd(a,b);
  31.         }
  32. }
复制代码

捕获.PNG (39.86 KB, 下载次数: 0)

捕获.PNG

评分

参与人数 1技术分 +1 收起 理由
Just_Only + 1 赞一个!

查看全部评分

回复 使用道具 举报
较难:
      1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;
      2.输入两个正整数m和n,求其最大公约数和最小公倍数。

求六分哦!!!!!!

  1. package heima;

  2. import java.util.Scanner;

  3. public class Test02 {

  4.         public static void main(String[] args) {
  5.                 Test02 te = new Test02();
  6.                 System.out.println("第一题:");
  7.                 System.out.print("输入一个数:");
  8.                 Scanner input = new Scanner(System.in);
  9.                 int x = input.nextInt();
  10.                 te.fjz(x);
  11.                 System.out.println("\n第二题:");
  12.                 System.out.println("输入两个数:");
  13.                 int a = input.nextInt();
  14.                 int b = input.nextInt();
  15.                 te.dell(a, b);

  16.         }

  17.         /*
  18.          * 求一个数的分解质因数
  19.          */
  20.         public void fjz(int x) {
  21.                 // 最小的质数是2
  22.                 int k = 2;
  23.                 System.out.print(x + "=");
  24.                 while (x >= k) {
  25.                         if (x == k) {
  26.                                 System.out.print(x);
  27.                                 break;
  28.                         } else if (x % k == 0) {
  29.                                 // 质因数
  30.                                 System.out.print(k + "*");
  31.                                 // x除以了k
  32.                                 x /= k;
  33.                         } else {
  34.                                 k++;
  35.                         }

  36.                 }

  37.         }

  38.         /*
  39.          * 求两个数的最大公约数,最小共倍数
  40.          */
  41.         public void dell(int a, int b) {
  42.                 // 保存原数
  43.                 int A = a;
  44.                 int B = b;
  45.                 // 最小公倍数为a,b的积除以最大共约束
  46.                 // m为最大公约数
  47.                 int m = 1;
  48.                 // n为最小公倍数
  49.                 int n = 1;
  50.                 // a>=b
  51.                 if (b > a) {
  52.                         int temp = a;
  53.                         a = b;
  54.                         b = temp;
  55.                 }
  56.                 // a除以b,余数再被b除,,循环,,直到,可以除尽,被除数即为m
  57.                 while (b != 0) {
  58.                         if (a == b) {
  59.                                 m = a;
  60.                                 break;
  61.                         } else {
  62.                                 int temp = a % b;
  63.                                 a = b;
  64.                                 b = temp;
  65.                         }
  66.                 }
  67.                 m = a;
  68.                 n = A * B / m;
  69.                 System.out.println("最大公约数:" + m);
  70.                 System.out.println("最小公倍数:" + n);
  71.         }
  72. }
复制代码
结果::
  1. 第一题:
  2. 输入一个数:90
  3. 90=2*3*3*5
  4. 第二题:
  5. 输入两个数:
  6. 12
  7. 18
  8. 最大公约数:6
  9. 最小公倍数:36
复制代码

评分

参与人数 1技术分 +2 收起 理由
Just_Only + 2

查看全部评分

回复 使用道具 举报
  1. public class lianxi {
  2.        
  3.         public static void main(String[] args) {
  4.                 lianxi1();
  5.                 lianxi2();
  6.                 lianxi3();
  7.         }

  8.         public static void lianxi1() {
  9.                 int fenzi = 2;
  10.                 int fenmu = 1;
  11.                 int t;
  12.                 double result = 2;
  13.                 for (int i = 0; i < 19; i++) { // 第一次已经初始化,循环19次
  14.                         t = fenzi;
  15.                         fenzi += fenmu; // 新分子
  16.                         fenmu = t; // 新分母
  17.                         result += result; // 迭代一次后的结果
  18.                 }
  19.                 System.out.println("第一题结果:"+result); // 打印结果
  20.         }

  21.         // 题目中第二个人与第一个人之间的关系不确定,默认也是差2?
  22.         public static void lianxi2() {
  23.                 int firstAge = 10; // 第一个人年龄
  24.                 int result = 0;
  25.                 result = 2 * 4 + firstAge; // 求地5个人年龄
  26.                 System.out.println("第二题结果:"+result);
  27.         }

  28.         public static void lianxi3() {
  29.                 double base = 100;
  30.                 double sum = base;
  31.                 for (int i = 2; i <= 10; i++) {
  32.                         sum += base; // 下一次落地是运动的总距离
  33.                         base /= 2; // 下一次跳起的高度
  34.                 }
  35.                 System.out.println("第三题结果:"+sum + "::"+ base); // 打印总高度和第十次跳起高度
  36.         }

  37. }
复制代码
先做前三题

QQ截图20130624093943.jpg (45.37 KB, 下载次数: 0)

QQ截图20130624093943.jpg

评分

参与人数 1技术分 +1 收起 理由
Just_Only + 1 赞一个!

查看全部评分

回复 使用道具 举报

只有第二题结果是对的,其它结果错误。
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 加入黑马