黑马程序员技术交流社区
标题:
练习三十:质因数分解问题
[打印本页]
作者:
maxwell247
时间:
2015-9-28 00:16
标题:
练习三十:质因数分解问题
本帖最后由 maxwell247 于 2015-9-28 00:21 编辑
从网上找到一份编程练习题,我决定将里面的题目全都做一遍。
/*
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*/
import java.util.Scanner;
class YinShuFenJie {
public static void main(String[] args) {
System.out.print("本程序将输出某数的因数分解。\n请输入一个正整数(大于1):");
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
if (num<=1){
System.out.println("输入不合法!");
}else if (isPrime(num)){
System.out.println(num+"本身就是一个素数.....");
}else{
System.out.print(num+"=");
fenJie(num);
}
}
//判断素数
public static boolean isPrime(int n){
for (int i=2; i<=Math.sqrt(n); i++){
if (n % i ==0){
return false;
}
}
return true;
}
//分解质因数
public static void fenJie(int num){
int i=2;
while(i<=num){
if(isPrime(i) && num % i ==0){ //如果i是素数,并且 num能整除i
System.out.print(i+"*"); //则输出 i
num=num/i; //缩小num的区间
}else{
i++;
}
if (i==num){ //当 num缩小到和 i相等时,也就是分解到最后一个质因子
System.out.println(i); //直接输出该因子
break;
}
}
}
}
/*
输出结果:
本程序将输出某数的因数分解。
请输入一个正整数(大于1):90
90=2*3*3*5
*/
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2