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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

版主你看我这个,三个题,我觉得是不是我的思想水平怎么这么低?只会这个。。。下面看结果。。。最好来个三分。。嘿嘿。。
第一题,我这个有点瑕疵,算出来的是整数:
  1. class  s1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=2,y=1,i;
  6.                 float sum=0,s;
  7.                 for (i=1;i<21 ;i++ )//累加21次
  8.                 {
  9.                         sum+=(x/y);//结果值累加,保留下来
  10.                         x=x+y;//后一个分子是前一个分子分母之和
  11.                         y=x-y;//后一个分母是前一个分子
  12.                 }
  13.        
  14.                 System.out.println(sum );
  15.         }
  16. }
复制代码
结果:

D:\11>javac s1.java

D:\11>java s1
21.0

D:\11>
第二题:
  1. class  age
  2. {
  3.         public static void main(String[] args)
  4.         {int i=2,age=10;
  5.         for(i=2;i<6;i++)
  6.         {
  7.                 age=(age+2);//都是大2岁么,嘿嘿。。。。
  8.                
  9.                 System.out.println("这是第"+i+"个人的年龄"+age);
  10.         }
  11.        
  12.                
  13.         }
  14. }
复制代码
结果:

D:\11>java age
这是第2个人的年龄12
这是第3个人的年龄14
这是第4个人的年龄16
这是第5个人的年龄18

D:\11>
第三个:
  1. class high
  2. {
  3.         public static void main(String[] args)
  4.         {int i=1;
  5.         float h=100;
  6.                 for(i=1;i<11;i++)
  7.         {
  8.         h=(h/2);//赋值,后一次位前一次的一半
  9.                 System.out.printf("这是落地第"+i+"次高度"+h);
  10.                 System.out.println("这是落地第"+i+"次高度"+h);
  11.                
  12.         }
  13.         }
  14.        
  15.        
  16. }
复制代码
结果:

D:\11>java high
这是落地第1次高度50.0这是落地第1次高度50.0
这是落地第2次高度25.0这是落地第2次高度25.0
这是落地第3次高度12.5这是落地第3次高度12.5
这是落地第4次高度6.25这是落地第4次高度6.25
这是落地第5次高度3.125这是落地第5次高度3.125
这是落地第6次高度1.5625这是落地第6次高度1.5625
这是落地第7次高度0.78125这是落地第7次高度0.78125
这是落地第8次高度0.390625这是落地第8次高度0.390625
这是落地第9次高度0.1953125这是落地第9次高度0.1953125
这是落地第10次高度0.09765625这是落地第10次高度0.09765625

D:\11>

评分

参与人数 1技术分 +2 收起 理由
Just_Only + 2 答题不完整,并且有一题是错误的。。。.

查看全部评分

回复 使用道具 举报
camml 中级黑马 2013-6-26 17:34:09
42#
我现在还不能上传图片,那个网络图片从空间里面也弄不过来
回复 使用道具 举报
辛苦了 !!!兄弟
回复 使用道具 举报
  1. package com.java.test;

  2. import java.util.*;

  3. public class Num {

  4.         /**
  5.          * @param args
  6.          * 有1,2,3,4四个数字,能组成多少个互不相同的且没有重复数字的三位数,都是多少,
  7.          * 并且将所得的三位数按升序排列并打印。
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub

  11.                 int count = 0;
  12.                 //使用for循环,在循环中打印出符合条件的数字就是从小到大排序的    可以不用考虑排序
  13.                 //因为都是数字,具备比较性   可以存入TreeSet集合 让集合帮忙排序
  14.                 Set<Integer> s = new TreeSet<Integer>();
  15.                
  16.                 //百位上的数字
  17.                 for(int x = 1; x<5;x++)
  18.                 {
  19.                         //十位上的数字
  20.                         for(int y = 1;y<5;y++)
  21.                         {
  22.                                 //个位上的数字
  23.                                 for(int z = 1; z<5;z++)
  24.                                 {
  25.                                         //判断:如果各位上的数字互不相同  则是符合条件的三位数
  26.                                         if(x != y && x!=z && y!=z)
  27.                                         {
  28.                                                 //符合条件   总数+1
  29.                                                 count++;
  30.                                                 int num = x*100 + y*10 + z;
  31.                                                 //打印该数字
  32.                                                 System.out.print(num+" ");
  33.                                                 //将该数字存入TreeSet集合
  34.                                                 s.add(num);
  35.                                         }
  36.                                        
  37.                                 }
  38.                         }                                       
  39.                 }
  40.                 System.out.println("\n互不相同的三位数共有:"+count+"个");
  41.                 //遍历TreeSet集合  打印排序好的数字
  42.                 for(int i:s)
  43.                 {
  44.                         System.out.print(i+" ");
  45.                 }
  46.                
  47.                
  48.         }
  49. }
复制代码

QQ图片20130626213036.jpg (20.38 KB, 下载次数: 0)

QQ图片20130626213036.jpg
回复 使用道具 举报
本帖最后由 ㄗs:/|丶hearts 于 2013-6-26 22:46 编辑

  1. <P> package com.java.test;</P>
  2. <P>public class Ball {</P>
  3. <P> /**
  4.   * @param args
  5.   * .一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,
  6.   * 求它在第10次落地时,共进过多少米?第十次反弹多高?
  7.   */
  8. public static void main(String[] args) {
  9.   // TODO Auto-generated method stub
  10.   
  11.   //第一次定义为int类型  运行结果sum的值为0  
  12.   //因为结果中有小数,所以定义为double类型
  13.   double high = 100, sum = 100;
  14.   
  15.   for(int i=1;i<10;i++)
  16.   {
  17.    high /= 2;
  18.    //球弹起到下一次弹起走过的路程  是弹起高度的2倍
  19.    sum += (high*2);
  20.       
  21.   }
  22.   //第十次反弹的高度应为 当前高度的一半  即high/2
  23.   System.out.println("球在第10次落地时,共进过"+sum+"米,第十次反弹高度为"+high/2);
  24. }</P>
  25. <P>}</P>
复制代码

QQ图片20130626224526.jpg (9.86 KB, 下载次数: 0)

QQ图片20130626224526.jpg
回复 使用道具 举报
题1
  1. package com.itheima;

  2. public class NewTest {

  3.         public static void main(String[] args) {
  4.                 int i,n=20;
  5.                 float a=2,b=1,s=0,t;
  6.                 for(i=1;i<=n;i++){
  7.                         s=s+a/b;
  8.                         t= a;
  9.                         a=a+b;//将前一项分子与分母之和作为下一项的分子
  10.                         b=t;//讲前一项的分子作为下一项的分母
  11.                 }
  12. System.out.println("前20项的和为:"+s);
  13.         }
  14. }
复制代码
回复 使用道具 举报
本帖最后由 李九一 于 2013-6-27 11:57 编辑

题2
  1. package com.itheima;

  2. public class NewTest {

  3.         public static void main(String[] args) {
  4.                 float s=100,h=s/2;
  5.                 int n;
  6.                 for(n=2;n<=10;n++){
  7.                         s=s+2*h;
  8.                         h=h/2;
  9.                 }
  10.                
  11. System.out.println("第10次落地时共经过:"+s);
  12. System.out.println("第10次反弹:"+h);
  13.         }
复制代码
回复 使用道具 举报
题(求公约数和共倍数)
  1. package com.itheima;
  2. import java.util.Scanner;
  3. public class NewTest {
  4.         public static void main(String[] args) {
  5.                 int p,r,n,m,temp;
  6.                 Scanner sc1=new Scanner(System.in);
  7.                 Scanner sc2=new Scanner(System.in);
  8.                 n=sc1.nextInt();m=sc2.nextInt();
  9.                 if(n<m){
  10.                         temp=n;
  11.                         n=m;
  12.                         m=temp;//把大数放在n中,小数放在m中
  13.                 }
  14.                 p=n*m;//先将n和m的成绩保存在p中,以便求最小公倍数
  15.                 while(m!=0){//求最大公约数
  16.                         r=n%m;
  17.                         n=m;
  18.                         m=r;
  19.                 }
  20.                
  21. System.out.println("最大公约数:"+n);
  22. System.out.println("最大公倍数:"+p/n);
  23.         }
  24. }
复制代码
结果
  1. 12 3
  2. 最大公约数:6
  3. 最小公倍数:12
复制代码
回复 使用道具 举报
本帖最后由 姚飞 于 2013-6-27 11:41 编辑

第一题修正后:

  1. <P> </P>
复制代码

  1. <P>class s1
  2. {
  3. public static void main(String[] args)
  4. {
  5. float x=2,y=1,i;
  6. float sum=0,s;
  7. for (i=1;i<21 ;i++ )//累加21次
  8. {
  9. sum+=(x/y);//结果值累加,保留下来
  10. x=x+y;//后一个分子是前一个分子分母之和
  11. y=x-y;//后一个分母是前一个分子
  12. }

  13. System.out.println(sum );
  14. }
  15. }</P>
  16. <P> </P>
  17. <P> </P>
复制代码
结果:

D:\11>javac s1.java
D:\11>java s1
32.660263
D:\11>
第三题:
  1. class high
  2. {
  3. public static void main(String[] args)
  4. {int i=1;
  5. float h=100,sum=100;
  6. for(i=1;i<11;i++)
  7. {
  8. h=(h/2);//赋值,后一次位前一次的一半
  9. sum+=h;
  10. System.out.println("这是落地第"+i+"次后的高度"+h);
  11. }
  12. System.out.println("这是落地第10次高度"+sum);
  13. }
  14. }
复制代码
结果:


D:\11>javac high.java
D:\11>java high
这是落地第1次后的高度50.0
这是落地第2次后的高度25.0
这是落地第3次后的高度12.5
这是落地第4次后的高度6.25
这是落地第5次后的高度3.125
这是落地第6次后的高度1.5625
这是落地第7次后的高度0.78125
这是落地第8次后的高度0.390625
这是落地第9次后的高度0.1953125
这是落地第10次后的高度0.09765625
这是落地第10次高度199.90234
D:\11>


回复 使用道具 举报
姚飞 发表于 2013-6-27 08:22
额,我还没有改好。。等下我从新编辑一下。。。。。

好的,再接再厉,加油,答题的时候,搞好了在帖,不然我不好加分的啊,帖子太多了。。。
回复 使用道具 举报
本帖最后由 张林敏 于 2013-6-27 14:03 编辑

顶起,好贴
我领“1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;”
  1. package com.itheima;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. /**
  5. * 1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;
  6. * @author ZhangLinmin
  7. */
  8. public class Main_6_27 {
  9.         public static void main(String[] args) {
  10.                 Integer num = 90;
  11.                 //1、定义存放分解结果
  12.                 List<Integer> list = new ArrayList<Integer>();
  13.                 //2、把分解的数据加入list中
  14.                 list.add(num);
  15.                 while(true){
  16.                         boolean isFinal = true;
  17.                         //3、对list中每个数据进行分别分解
  18.                         for (int i = 0; i < list.size(); i++) {
  19.                                 Integer cutNum = list.get(i);
  20.                                 for (int j = 2; j < cutNum; j++) {
  21.                                         Integer result = cutNum % j;
  22.                                         //4、对list中查找到需要进行分解的,进行删除需分解数据,并把分解结果加入list中,等待再次分解
  23.                                         if (result == 0) {
  24.                                                 //如果有查找到需要分解的,就不让结束
  25.                                                 isFinal = false;
  26.                                                 list.remove(i);
  27.                                                 list.add(j);
  28.                                                 list.add(cutNum/j);                                               
  29.                                                 break;
  30.                                         }
  31.                                 }
  32.                         }
  33.                         if(isFinal){
  34.                                 break;
  35.                         }
  36.                 }
  37.                
  38.                 //输出结果
  39.                 System.out.print(num+"=");
  40.                 for (int i = 0; i < list.size(); i++) {
  41.                         System.out.print((i==0?"":"*")+list.get(i));
  42.                 }
  43.         }

  44. }
复制代码
回复 使用道具 举报

1.将一个正整数分解质因数,例如:输入参数90,打印出90=2*3*3*5;
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步
  1. package com.itheima;
  2. public class 分解质因数 {
  3.         public static void main(String[] args){
  4.                   int n = 90;
  5.                   decompose(n);
  6.                  }
  7.                  private static void decompose(int n){
  8.                   System.out.print(n+"=");
  9.                   for(int i=2;i<n+1;i++){
  10.                    while(n%i==0 && n!=i){
  11.                     n/=i;
  12.                     System.out.print(i+"*");
  13.                    }
  14.                    if(n==i){
  15.                     System.out.println(i);
  16.                     break;
  17.                    }
  18.                   }
  19.                  }
  20. }
复制代码

分解质因数.jpg (74.14 KB, 下载次数: 0)

分解质因数.jpg

评分

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

查看全部评分

回复 使用道具 举报

代码实现了,结果少粘上去了
  1. 第10次落地时共经过:299.60938
  2. 第10次反弹:0.09765625
复制代码
回复 使用道具 举报
今天先写两个简单的后面的有点难,以后在写,不知道对不对,给你们看看
  1. /** Test1.有五个人坐在一起,问第五个人是多少岁,他说比第四个人大两岁。问第四个人是多少岁,他说比第三个人大两岁。问第三个人是多少岁,他又说比第二个人大两岁.,问第二个人,他又说比第一个人大两岁。问最后一个人,他只是说10岁,请问第五个人多大。
  2. *@ auther 倪成伟
  3. */
  4. /*
  5. 思路:1.通过一个for循环4次实现累加
  6. */
  7. class FifthOld
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 int x=10;
  12.                 for(int y=1;y<5;y++)                //用for循环实现4次累加
  13.                 {
  14.                     x+=2;
  15.                 }
  16.                         System.out.println("FifthOld="+x);

  17.         }
  18. }
复制代码
下面是第二题
  1. /**
  2. *Test2.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  3. *auther@倪成伟
  4. */
  5. /*思路:1.建立两个数组分别接受前20项分子分母的值
  6.         2.然后通过一个累加的方法实现且20项的和
  7. */
  8. class Sum
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 //定义两个长度为20的数组分别接受分子分母的值
  13.                 int arr1[]=new int[20];
  14.                 int arr2[]=new int[20];
  15.                 //初始化前两项的值
  16.                 arr1[0]=2;
  17.                         arr1[1]=3;
  18.                 arr2[0]=1;
  19.                 arr2[1]=2;
  20.                 //通过一个for循环来算出前数组中的元素
  21.                 for(int x=2,y=2;x<=19;x++,y++)
  22.                 {
  23.                         arr1[x]=arr1[x-2]+arr1[x-1];
  24.                         arr2[y]=arr2[y-2]+arr2[y-1];
  25.                 }
  26.                 int sum=0;                //用来接受累加的值
  27.                 //在通过一个for循环来实现累加
  28.                 for(int m=0,n=0;m<=19;m++,n++)
  29.                 {
  30.                         sum=sum+(arr1[m]/arr2[n]);
  31.                 }
  32.                 System.out.println("前20项之和 "+sum);
  33.         }
  34. }
复制代码

R(_(Z6L3)LC1BZBVFHIJNE3.jpg (12.23 KB, 下载次数: 0)

第一题

第一题

M[ILD6}8SR60D[_@S9BWO(Y.jpg (9 KB, 下载次数: 0)

第二题

第二题

评分

参与人数 1黑马币 +3 收起 理由
Just_Only + 3 奖励一下。。。

查看全部评分

回复 使用道具 举报
我改了下不知道对不对,如果这也错了,那是不是我的思路有问题,求指导
  1. /**
  2. *Test2.有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  3. *auther@倪成伟
  4. */
  5. /*思路:1.建立两个数组分别接受前20项分子分母的值
  6.         2.然后通过一个累加的方法实现且20项的和
  7. */
  8. class Sum
  9. {
  10.         public static void main(String[] args)
  11.         {
  12.                 //定义两个长度为20的数组分别接受分子分母的值
  13.                 double arr1[]=new double[20];
  14.                 double arr2[]=new double[20];
  15.                 //初始化前两项的值
  16.                 arr1[0]=2.0;
  17.                         arr1[1]=3.0;
  18.                 arr2[0]=1.0;
  19.                 arr2[1]=2.0;
  20.                 //通过一个for循环来算出前数组中的元素
  21.                 for(int x=2,y=2;x<=19;x++,y++)
  22.                 {
  23.                         arr1[x]=arr1[x-2]+arr1[x-1];
  24.                         arr2[y]=arr2[y-2]+arr2[y-1];
  25.                 }
  26.                 double sum=0;                //用来接受累加的值
  27.                 //在通过一个for循环来实现累加
  28.                 for(int m=0,n=0;m<=19;m++,n++)
  29.                 {
  30.                         sum=sum+(arr1[m]/arr2[n]);
  31.                 }
  32.                 System.out.println("前20项之和 "+sum);
  33.         }
  34. }
复制代码

$FP9]_5B8PZ)_AF7_)9CE70.jpg (11.32 KB, 下载次数: 0)

第二题

第二题

评分

参与人数 1技术分 +2 收起 理由
Just_Only + 2 辛苦了,加油。。。

查看全部评分

回复 使用道具 举报
本帖最后由 杨晓燕 于 2013-6-28 11:18 编辑

我总是那么后知后觉啊,{:soso_e120:}先贴一个试试,【第一题】请杨大哥多多关照
  1. /*
  2. 需求:有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和
  3. 思路:1,要先定义一个变量记录总和,为float类型
  4. 2,定义一个自增变量,控制循环次数,这里我们使用的是for循环
  5. 3,根据分数数列的规律,设置分母初始值为x=1,分子初始值为y=2;
  6. */

  7. class Test1
  8. {
  9. public static void main(String[] args)
  10. {
  11. float sum=0f; //定义一个记录总和的变量,不要在循环里面定义,因为循环结束,该变量就在内存中释放了
  12. float x=1f,y=2f;//定义分母和分子的初始值,也不要在循环里面定义,否则每次循环都会重新初始化该值
  13. for(int i=1;i<=20;i++)
  14. {

  15. sum+=y/x;
  16. float temp=y;//定义一个第三方变量,将分子y的值取出
  17. y=y+x; //根据需求,分子的值=分子+分母
  18. x=temp; //根据需求,分母的值=前一个分数的分子
  19. }
  20. System.out.println(sum);
  21. }
  22. }
复制代码

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

2.jpg

评分

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

查看全部评分

回复 使用道具 举报
再搞一题,求指教
  1. /**一般:
  2. Test1.一球从一百米高度自由下落,每次落地后反跳原来高度的一半,再落下,求它在第10次落地时,共进过多少米?第十次反弹多高?
  3. *auther @ 倪成伟
  4. */
  5. /*
  6. 思路:1.通过循环递减来计算第十次反弹的高度
  7.           2.通过一个数组来接受每次反弹的高度
  8.       3.通过循环累加来记录第十次落地共进行了多少米
  9. */
  10. class Jump
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 int x=0,y=0;     //初始化高度,并且定义两个变量来记录结果
  15.                 double m=100,sum=0;
  16.                 double[] arr=new double[10];                //定义一个数组来接受每次反弹的高度
  17.                 while(y<10)                                                //while循环来得出反弹高度
  18.                 {
  19.                         m=m/2;
  20.                         arr[y]=m;
  21.                         y++;
  22.                 }
  23.                 System.out.println("第十次反弹高度        "+m);
  24.                 for(m=100;x<10;x++)                                //用for循环来初始化m值,并累加高度
  25.                 {
  26.                         sum+=(arr[x]*2);
  27.                 }
  28.                 sum=sum+100;                                                //加一百记录第一次落下所走得路
  29.                 System.out.println("反弹十次共进多少米        "+sum);
  30.         }
  31. }
复制代码

2N[CJQ22)IE`0IIJEL$NGKS.jpg (10.92 KB, 下载次数: 0)

2N[CJQ22)IE`0IIJEL$NGKS.jpg

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 ゞ傀儡鮭鮭ぃ 于 2013-6-28 13:08 编辑

第一题
java代码:
class one
{
    public static void main(String args [])
{
        double sum = 0;
        double a = 2.0;
        double b = 1.0;
         double c = 0;   //分子为b  分母为a
          for(double n=1; n<=20; n++)
{
            sum+=(double)a/(double)b; //序列求和
            c=a;
            a+=b;
            b=c;          //求下一项序列
        }
        System.out.println("分数序列之和为"+sum);
    }
}
程序分析:先观察出序列之间的联系,根据分子分母之间的变化关系,算出每一项,再利用for循环进行求和.
运行结果:

第二题
java代码:
class two{
   static int getAge(int n)
{
    if (n==1)
{
     return 10;   //第一个人年龄
}
    return getAge(n-1)+2; //逆推,一次增加2年
   }
   public static void main(String[] args) {
    System.out.println("第五个年龄为:"+getAge(5));//获取第五个人年龄
   }
}
程序分析:利用递归,知道第五个人的年龄之后推第四个年龄,由此,知道第一个人年龄,再反推.
运行结果:

第三题
java代码:
class three{
public static void main(String [] args)
{
int n=1 ;//弹跳数
double s=100;//初始高度100米
double h=s/2;//第一次碰到地面反弹高度
for(n=1;n<10;n++){
s=s+h*2;//第n次落地经过多少米
h=h/2;//第n次反弹的高度
}
System.out.println("第"+n+"次落地经过"+s+"米");
System.out.println("第"+n+"次反弹"+h+"米");
}
}
//程序思路:这是绝对值小于1的无穷递缩等比数列,首项a1为100,公比q=1/2,路程求和极限,先用for循环求和,再把a10表示出来即可.
//运行结果 :

第四题
java 代码:
class four{
public static void main(String [] args)
{
int i=0;
int a=1;
int b=1;
int c=1;
for(a=1;a<=4;a++)
for(b=1;b<=4;b++)
for(c=1;c<=4;c++)//按顺序自动生成所有三个1234随机数的组合
if(a!=b&&b!=c&&c!=a&&i++!=0)//抽取互不相同且无重复数字的三位数
System.out.println("第"+i+"个数是:"+a+""+b+""+c);
System.out.println("有"+i+"个");
}
}
//程序思想:先按顺序自动生成所有三个1234随机数的组合,再根据互不相同且无重复数字的条件逐步筛选,并计算出组合数个数,打印输出.
运行结果:


第五题
java代码:
import java.util.*;
class five{
public static void main(String [] args){
System.out.println("java分解正整数质因数案例");
System.out.println("请输入一个合适的正整数,并按Enter确认");
Scanner sc=new Scanner(System.in);
int Num=sc.nextInt();
//首先,我们需要得到,输入的这个数Num的一半以内的所有质数
Vector<Integer> vec=new Vector<Integer>();
Lab:for(int i=2;i<=Num;i++){
for(int j=2;j<=i/2;j++){
if(i%j==0&&i!=2){//说明能被整除,则i不是质数
continue Lab;
}
}
//内层for正常完成后,说明i是质数
vec.add(i);//添加到列表
}
//下面开始分解质因数
System.out.println(Num+"的分解结果是:\n");
System.out.print(Num+"=");
int theNum=Num;
boolean help=true;
for(int k=0;k<vec.size();k++){
int zhi=(int)vec.get(k);
if(theNum<zhi)
break;
if(theNum%zhi==0){//说明能被整除,则zhi就是Num的一个质因数
if(help==true){
System.out.print(zhi);
help=false;
}else{
System.out.print("*"+zhi);
}
k--;//因为,完全有可能Num还能被zhi整除,
//所以重新执行一遍
theNum=theNum/zhi;
}
}
}
}
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。运行结果:


第六题

java代码:
import java.util.*;
class     six{  
public static void main(String[] args) {
  int   a ,b,m;
  Scanner s = new Scanner(System.in);
  System.out.print( "键入一个整数: ");
  a = s.nextInt();System.out.print( "再键入一个整数: ");
  b = s.nextInt();      
  // new 一个类 目的是调用类中的方法 deff
   deff cd = new deff();      
   // 调用类中的方法 deff 获得最大公约数
  m = cd.deff(a,b);      
  
  // 计算最小公倍数
  int n = a * b / m;      
  System.out.println("最大公约数: " + m);      
  System.out.println("最小公倍数: " + n);
}
}class deff {
public int deff(int x, int y) {
  int t;
  // 如果x<y 则将x和y的值互换
  if (x < y) {
   t = x;
   x = y;
   y = t;
  }
  
  //程序执行到这里 x肯定大于或者等于y
  
  while (y != 0) {
   // 如果x和y相等,那么他们的最大公约数是x
   if (x == y){
    return x;
   }
   // 当x和y不相等的时候 将y的值赋值给x 将原x的值和y的余数赋值给y
   // 这时候x依然大于或者等于y 接着进行下一轮计算
   // 一直循环下去,当k为0的时候,x就是最大公约数了
   else {
    int k = x % y;
    x = y;
    y = k;
   }
  }
  return x;
}
}
程序设计:利用辗转相除法,先输入两个随机正数,然后通过数学思想求出最大公约数和最小公倍数.


运算结果:



评分

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

查看全部评分

回复 使用道具 举报
  1. package Demo;

  2. public class JianDan1 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 double sum = 0;
  9.                  
  10.                 double a = 2.0;
  11.                  
  12.                 double b = 1.0; //分子为b 分母为a 你这里应该是分母为b,分子为a把
  13.                  
  14.                 for(int n=1; n<=20; n++) // 定义一个for循环,是求前20项。
  15.                  
  16.                 {
  17.                  
  18.                 sum+=(double)a/(double)b;//序列求和
  19.                  
  20.                 double temp=b;//定义一个第三方变量,将b的值取出来
  21.                  
  22.                 b=a;
  23.                  
  24.                 a+=temp;
  25.                  
  26.                 }
  27.                  
  28.                 System.out.println("分数序列之和为"+sum);
  29.         }

  30. }
复制代码
回复 使用道具 举报
上面忘记写运算结果了……结果为——分数序列之和为32.66026079864164
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马