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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘伟平 中级黑马   /  2012-10-14 17:12  /  1060 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
  1. /*
  2. 程序分析:对n 进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
  3. (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
  4. (2)如果n!=k,但n 能被k 整除,则应打印出k 的值,并用n 除以k 的商,作为新的正整数n,重复执行第一步。
  5. (3)如果n 不能被k 整除,则用k+1作为k 的值,重复执行第一步。

  6. */
  7. class  Test04
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 //参数传入要分解质因数的正整数
  12.                 resolve(13463634);
  13.         }

  14.         //输出
  15.         public static void resolve(int num)
  16.         {
  17.                 //判断是否是正整数
  18.                 if (num<0)
  19.                 {
  20.                         System.out.println("请输入正整数");
  21.                         return;
  22.                 }
  23.                 String result = num+" = ";
  24.                 int k = 2;
  25.                 while ((k = minRemNum(num)) != num)
  26.                 {
  27.                         result +=k + "*";
  28.                         num = num/k;
  29.                         System.out.println(result);
  30.                 }
  31.                 System.out.println(result+k);
  32.         }

  33.         //获得能整除num的最小素数
  34.         private static int minRemNum(int num)
  35.         {
  36.                 for (int r = 2; r<num+1 ; r++ )
  37.                 {
  38.                         if(isRem(r) && num%r==0)
  39.                                 return r;
  40.                 }
  41.                 return 1;
  42.         }

  43.         //判断参数是否是素数
  44.         private static boolean isRem(int r)
  45.         {
  46.                 for (int m = 2; m<r ; m++ )
  47.                 {
  48.                         if (r%m == 0)
  49.                                 return false;
  50.                 }
  51.                 return true;
  52.         }
  53. }
复制代码

评分

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

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马