题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
第一部分:输入正整数
第二部分:找出质因数
(1)声明一个变量初始化为输入的正整数,每当找一个正整数,它就除等于质因数
(2)找出因数即可以整除的数
(3)判断此数是否为质数(封装一个方法)
(4)用数组存储所有的质因数
(5)把如上的步骤放入循环中,循环推出条件为(1)中声明的变量值为一
第三部分:输出结果
遍历输出,记得不要换行
具体实现代码如下:
package com.chap_3_lly;
import java.util.Scanner;
import static java.lang.Math.sqrt;
public class Main4 {
public static void main(String[] args) {
int num,n=0;//n用来记录数组中有效数据的个数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个正整数:");
num = sc.nextInt();
int[] arr = new int[100];
int temp = num;//临时存储除以一个质因数后的值
while(temp!=1){
//未除尽就继续循环
for (int i = 2; i <= temp; i++) {
/*遍历<=temp的数,必须要包含temp,不然除不尽,
如temp
*/
if (ifPrimeFactor(i)) {
if(temp%i==0){
temp/=i;
arr[n] = i;
n++;
break;
}
}
}
}
System.out.print("90 = ");
for (int i = 0; i < n; i++) {
if (i==n-1){
System.out.println(arr[i]);
}else {
System.out.print(arr[i] + "*");
}
}
}
private static boolean ifPrimeFactor(int i) {
boolean flag = true;
for (int j = 2; j < sqrt(i); j++) {
if (i%j==0){
flag = false;
break;
}
}
return flag;
}
}
运行结果为:
请输入一个正整数:
90
90 = 2*3*3*5
欢迎指正