For example: the input 90, to print out 90 = 3 * 2 * 3 * 5.
package project;
import java.util.Scanner;
public class Question03 {
public static void main(String[] args) {
/**
* 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
*
* 实现思路
* 1.输入一个正整数,判断是否合格数据,不合格继续让用户输入
* 2.用循环求它的质因数,找到打印输出
*/
//1.输入一个正整数,判断是否合格数据,不合格继续让用户输入
Scanner input = new Scanner(System.in);
//提示用户输入
System.out.println("请输入一个大于2的正整数");
int num = input.nextInt();
//判断是否合格数据,不合格继续让用户输入
while(num<=2) { //20
System.out.println("输入错误,请重新输入一个大于2的正整数");
num=input.nextInt();
}
//如果是一个素数(质数) //方法
while(isPrimeNumber(num)==true) {
System.out.println("输入错误,"+num+"是一个素数,请重新输入一个大于2的非素数的正整数");
num=input.nextInt();
}
//2.用循环求它的质因数,找到打印输出
System.out.print(num+"=");
int halfnum = num/2; //10
for (int i = 2; i <= halfnum; i++) {
if(num>i) {
if(num%i==0) {
System.out.print(i+"*");
num = num/i;
i--;
continue;
}
}
else {
System.out.print(i);
break;
}
}
}
/**
* 判断是否是一个素数
* @param num
* @return
*/
public static boolean isPrimeNumber(int num) {
for (int j = 2; j <=Math.sqrt(num); j++) {
if(num%j==0)
return false;
}
return true;
}
}
Other methods
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int i=input.nextInt();
System.out.print(i+"=");
int n=2;
String yinshi="";
while(true) {
if(i%n==0) {
i=i/n;
if(i==1) {
yinshi=yinshi+n;
break;
}
yinshi=yinshi+n+"*";
}else {
n++;
if(n>=i) {
yinshi=i+"="+yinshi+n;
break;
}
}
}
System.out.println(yinshi);
}
}
import java.util.Scanner;
public class Demo{
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("请输入正整数:");
int x = input.nextInt();
System.out.print(x+"=");
for(int i=2;i<x;i++) {
while(i!=x) {
if(x%i==0) {
System.out.print(i+"*");
x=x/i;
}
else
break;
}
}
System.out.println(x);
}
}
package com.yc.homework04;
import java.util.Scanner;
public class Demo {
public static boolean zhishu(int n) { //判断传入的数是否为质数
for(int j=2; j<=(int)Math.sqrt(n); j++) {
if(n%j == 0)
return false;
}
return true;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n=2;//除数
System.out.println("请输入一个数,将其分解质因数:");
int num = input.nextInt();//被除数
System.out.print(num+"=");
if(num == 1)
System.out.println("1");
while(num != 1) {
if((zhishu(n) == true) && (num % n == 0)) {
System.out.print(n);
num = num / n;
if(num != 1) {
System.out.print("*");
}
} else {
n++;
}
}
}
}