JAVA基础:一个大于2的偶数始终可以分解成多个质数相乘
package codeCompliation;
import java.util.Scanner;
public class isPrime {
/**
* 判断一个数是否是质数
* @param number
* @return
*/
public static boolean isPrime(int number){
int num=0;
for(int i = 1;i<=number;i++){
if(number%i==0){
num++;
}
}
if(num==2){
return true;
}else
return false;
}
public static void main(String[] args) {
int number=1;
int dividend=1;
while(true){
System.out.println("请输入一个大于2的偶数:");
Scanner scan=new Scanner(System.in);
number=scan.nextInt();
if(number%2==0&&number>0){
break;
}else
System.out.println("输入错误,请重新输入:");
}
String reverse="";
int num=number; //(注意点第一个for中的取值,sum)
for(dividend=2;dividend<num;dividend++){ //循环找出被除数里面的质数
if(isPrime(dividend)&&number%dividend==0){ //找出被除数里的除数后,再找质数相除
num=number/dividend; //再把这个被除数赋值给sum;
reverse+=(dividend+"*"); //然后把这个被除数加入reverse字符串中
for(int i=1;i<num;i++){ //再判断这个被除数以内有能被上一个被除数整除的质数
if(isPrime(i)&&num%i==0){ //在赋值给sum;
num=num/i; //如果是质数,且能被上一个被除数整除,则把这个质数加入到reverse中
reverse+=(i+"*");
i=1; //(让下次循环到第二个for的时候从1开始循环
continue;
}
}
}
}
System.out.println(number+"="+reverse+num);
}
}