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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

什么题都行,只要是java就行:D

点评

把常见排序方法都用java写一遍吧:插入排序、快速排序、归并排序、Shell排序、Heap排序、拓扑排序  发表于 2014-8-14 20:30

4 个回复

倒序浏览
对一个数进行质因数分解,写出思路和代码!
回复 使用道具 举报
hejinzhong 发表于 2014-8-14 19:22
对一个数进行质因数分解,写出思路和代码!
  1. /*
  2. 求解:对一个数进行质因数分解
  3. 思路:分解质因数,就是把一个合数分解成质数相乘如12=2*2*3;
  4.         设计到多次除法,用递归调用。
  5. 步骤:1.把一个数从2到自身减一取余数,如果不等于0的continue,
  6.         2.如果取余为0,将被除数储存到数组中,余数暂时存到一个变量中,
  7.         余数重新进行递归判断。
  8.         3.如果数组中0脚标数为0,则判断这个数不是合数。
  9. */
  10. class  DivisionDemo                                                                                                                                      
  11. {                       
  12.         static int count=0;
  13.         static int remainder=0;       
  14.         static int arr[]=new int[10];
  15.         public static void main(String[] args)
  16.         {
  17.                
  18.                 divComposite(7);//传入需进行质因数分解的数
  19.                 method(arr);
  20.         }
  21.         public static int divComposite(int num)
  22.         {
  23.                 for(int i=2;i<num;i++)
  24.                 {
  25.                         if((num%i)!=0)
  26.                                 continue;
  27.                         else      
  28.                         {
  29.                                 arr[count++]=i;
  30.                                 remainder=num/i;
  31.                                 //递归调用
  32.                                 divComposite(remainder);
  33.                                 //调用一次之后直接跳出循环
  34.                                 break;
  35.                         }
  36.                 }
  37.                 arr[count]=remainder;//数组最后一个质数是余数
  38.                 return remainder;
  39.         }
  40.         public static void method(int[] arr)
  41.         {
  42.                 if(arr[0]==0)
  43.                 {
  44.                         System.out.println("该数不是合数,不能进行质因分解!");
  45.                 }
  46.                 else
  47.                 {
  48.                         print(arr);//调用数组打印函数
  49.                 }
  50.         }
  51.         public static void print(int[] arr)//数组打印函数
  52.         {
  53.                 for(int x=0;x<arr.length;x++)
  54.                 {
  55.                         System.out.print(arr[x]+",");
  56.                 }
  57.         }
  58. }
复制代码
回复 使用道具 举报
本帖最后由 hejinzhong 于 2014-8-16 00:24 编辑

  1. import java.io.*;
  2. public class Factorization {
  3.         public void division(int input) {
  4.                 for (int i = 2; i <= input / 2; i++) {
  5.                         if (input % i == 0) {
  6.                                 System.out.print(i + "*");
  7.                                 division(input / i);
  8.                         }
  9.                 }
  10.                 System.out.print(input);
  11.                 System.exit(0);// 不能没有这句,否则结果会报错
  12.         }
  13. //下面是接收键盘录入
  14.         public static void main(String[] args) {
  15.                 Factorization f = new Factorization();

  16.                 String s = null;
  17.                 try {
  18.                         BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  19.                         s = in.readLine();
  20.                 } catch (IOException e) {
  21.                 }
  22.                 int input = Integer.parseInt(s);
  23.                 System.out.print(input + "的分解质因数为:" + input + "=");
  24.                 f.division(input);
  25.         }
  26. }

复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马