黑马程序员技术交流社区
标题:
算法分析
[打印本页]
作者:
周一川
时间:
2013-3-13 08:17
标题:
算法分析
【程序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的值,重复执行第一步。
这题做了好久,都没有头绪请哪位大侠帮个忙
作者:
黑马-郑玉元
时间:
2013-3-13 09:00
在这里我先讲下自己的思路,不知道对你是否有帮助!
根据题目意思,肯定是要有个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; //能整除之后,得到新的整数,执行第一步
}
}
作者:
wanggang
时间:
2013-3-13 10:40
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);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2