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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jaybor 中级黑马   /  2015-5-28 22:01  /  826 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Jaybor 于 2015-5-28 22:02 编辑

需求:给定一个正整数n,将其分解成质因数,例如:90=2*3*3*5;
思路:
* 1.判断n的最小质数因子k,如果n等于k就直接输出结果
* 2.如果n>k
*                 n能被k整除,那么用n/k的上作为新的n
*                 n不能被k整除,用k+1代替k
* 3.必须注意的是最后一项可能会小于k导致在循环体内没有被添加,这时要在循环结束后补上;
*                         例子:90=2*3*5*,最后一项为3,而此时k=6,这时就会少输出一项;

代码:
  1. public class Test2{
  2.         public static void main(String[] args) {
  3.                 //定义n
  4.                 int n=16;
  5.                
  6.                 System.out.print(n+"=");
  7.                
  8.                 int k=2;
  9.                 while(k<=n){
  10.                         if(k==n){
  11.                                 System.out.println(k);
  12.                                 return;//如果最后一项n等于k那么就不用在执行循环后的打印语句了
  13.                         }else if(n%k==0){
  14.                                 System.out.print(k+"*");
  15.                                 n=n/k;
  16.                         }
  17.                         k++;
  18.                 }
  19.                 System.out.print(n);//防止最后一项n小于k导致没有被添加到结果中去,从而产生错误。
  20.         }
  21.        
  22.        
  23. }
复制代码





2 个回复

倒序浏览
{:2_32:}。。。。。
回复 使用道具 举报
  1. package Test;
  2. //给定一个正整数n,将其分解成质因数,例如:90=2*3*3*5
  3. /**
  4. * 1.判断这个数是否是素数,是:不作处理,否:下一步
  5. * 2.知道最小素数因子,记录(输出),
  6. * 3.除去最小因子,这个数重复第一步*/
  7. public class Test3 {
  8.     public static void main(String[] args) {
  9.             //定义n
  10.             int n=200;
  11.             
  12.             System.out.print(n+"=");
  13.             
  14.             int k=2;
  15.             while(k<=n){
  16.                     if(k==n){
  17.                             System.out.println(k);
  18.                             return;//如果最后一项n等于k那么就不用在执行循环后的打印语句了
  19.                     }else if(n%k==0){
  20.                             System.out.print(k+"*");
  21.                             n=n/k;
  22.                     }
  23.                    [color=Red] else
  24.                         k++;[/color]
  25.             }
  26.             System.out.print(n);//防止最后一项n小于k导致没有被添加到结果中去,从而产生错误。
  27.     }
  28.    
  29.    
  30. }
复制代码

代码少了一个else,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马