黑马程序员技术交流社区
标题:
一道数学题,会得来
[打印本页]
作者:
sxyqjdh
时间:
2016-4-19 22:47
标题:
一道数学题,会得来
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
??
作者:
陈文广
时间:
2016-4-20 11:07
public class Test4 {
/**
* 因式分解:
* 将一个合数分解成它的所有因子的乘积
* 例如90=2*3*3*5.
* 分析:
* 1.合数的所有因子都是素数
* 2.将合数从最小的素数开始去除以, 如果能整除就 将商的结果继续除以该素数.直到该素数不能整除该商为止.
* 3.将第2步的商 再去除以第二步的素数加+1的数 ,直到 该数 不能整除该商为止
* 4.一直循环到除数等于 商为循环结束条件
*/
public static void main(String[] args) {
factorAnalysis(90);
}
//编写方法实现因式分解
public static void factorAnalysis(int n){
//定义变量记录住除数
int a=2;
System.out.print(n+"=");
while(a<=n){//如果除数小于等于被除数就一直循环判断输出结果
while (n%a==0&&n!=a) {//如果除数能过整除被除数
//输出该因子
System.out.print(a+"*");
//将商重新作为被除数
n=n/a;
}
if(n%a==0&&n==a) {
//输出最后一个因子
System.out.print(a);
}
//如果除数不能整除被除数就将 除数+1 再进行整除判断
a++;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2