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);
  
 }
}

posted @ 2016-06-04 22:15  爆破鬼才xcc  阅读(763)  评论(0编辑  收藏  举报