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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周一川 中级黑马   /  2013-3-13 08:17  /  1195 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

这题做了好久,都没有头绪请哪位大侠帮个忙

2 个回复

倒序浏览
在这里我先讲下自己的思路,不知道对你是否有帮助!
根据题目意思,肯定是要有个for循环的,按照意思就是:从2开始,如果n能被2整除,打印出2,然后再n除以2得到新的值,然后用新的值继续循环。
文字描述的不怎么清楚,看代码:
int n=90;//定义一个你要分解的数
                for (int i=2;i<n;i++ )//一个for循环,如果i小于n,则结束循环
                {       
                        if(n%i==0){//判断条件,如果能被整除,则执行
                                System.out.println(i);
                                n=n/i;                //能整除之后,得到新的整数,执行第一步                       
                        }                       
                }
回复 使用道具 举报
public class Suanfa

{ //判断第一个数,得出第二个数,交给下面的方法去判断
  public void Zhishu(int s)
  {


//int[]  a =new int[20];
for(int i=2;i<=s;i++)
  {
      if(s%i==0)
     {
      s/=i;
      System.out.println(i);
     s= Panduan(s);
     }
             
}
     
      

  
   

  }
//判断第二个数,也就是将第二个数及后面的数依次分解出来
public int Panduan(int x)
{
        for(int i=2;i<=x;i++)
          {
              if(x%i==0)
             {
              x/=i;
              System.out.println(i);
             
             }
          }
        return x;
}
   public static void main(String[] args)
{
    Suanfa mt=new Suanfa();
    mt.Zhishu(90);


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