黑马程序员技术交流社区
标题:
一个javase 基础的问题!
[打印本页]
作者:
黄方
时间:
2012-3-4 11:12
标题:
一个javase 基础的问题!
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 期待讨论!!!
作者:
wang耀雨
时间:
2012-3-4 18:38
纳闷了。。。帖子都摆在这7个多小时了,咋没人来给个回复呢
我也研究思考了好久了,还好整出来了。。。汗,技术分不好拿啊,也已经实现楼主的例如:“输入90,打印出90=2*3*3*5”,请看,看完保证你弄明白各个问题
//思想:所谓分解质因数就是将正整数用质数以乘法形式连接起来
//输入的值为质数的时候直接返回并提示当前输入的值为质数,
//最小的质数是2,为了方便也为了规范,我们就从2开始运算。
public class Test1{
public static void main(String args[]){//主函数
zhijie(90);//输入90
}
public static void zhijie(int n){//质解函数
int[] arr=new int[100];//定义数组用来存储因子,此处长度够用即可
int pos=0;//定义指针变量用来遍历数组
for(int i=2;i<=n;i++){//定义for循环,以最小的质数2
//初始化i的值,从2作为除数开始运算
while(n!=i){//即n不是质数的时候执行while,把当前质因数分解彻底后
if(n%i==0){//当n仍是i的倍数的时候,继续进行分解直至分解尽n中的当前因子
arr[pos++]=i;//分解一次输出一个因子,说明有1个或多个当前i的值作为n的质因子
n=n/i;//分解一次后,n的值缩小i倍,进行下一次分解
}else{//当n的值已经不再包含当前i值的因子,则跳出while改变i值,遍历n 其他因子
break;
}
}
}
arr[pos]=n;//当n分解尽质因数后,当前n值已不再包含任何质因数
//(当前n值是被分解到最后的一个质因数),打印n!此处已经不需要pos自增1,上面在最后一次
//赋值给arr元素之后已经自增1;
System.out.print("90=");//打印:此处不需要再循环内执行
for(int i=0;i<pos;i++){//for循环遍历数组,格式化输出
System.out.print(arr[i]+"*");
}
System.out.println(n);
}
}
作者:
刘泰
时间:
2012-3-4 18:49
用JAVA写的代码
public class number{
public void text4(){
Scanner input=new Scanner(System.in);
int number=input.nextInt();//从键盘输入一个要分解的数
int k=2;
while(number>k){ /用while循环来实现
if(number%k==0){
System.out.print(k+"*");
number=number/k;
}else k++;
}
System.out.println(number+";");
}
public static void main(System in){
number nb=new number();
nb.text();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2