java 算出所有满足乘积为一个数的素数(也就是质数)

来源:互联网 发布:全速建站软件 编辑:程序博客网 时间:2024/06/13 09:51
package com.meritit.func;
/**
 * 
 * @author Administrator
 * 判断一个数是由哪些质数相乘得来的
 * 思路:
 * 1、先判断这个数是不是素数,也就是质数,如果是,直接输出
 *· 2、将这个数循环去除一个素数(默认除2-这个数本身),但是需要确认除的数是质数
 * 比如 12 可除的数据为2、3、5、7、11其他数不可除
 * 3、如果这个除数是质数,并且能被本身整除,则为该数的一个素数
 */
public class FindFactor {

public static void main(String[] args) {
int i = 345;
FindFactor f = new FindFactor(); 
f.getFactor(i);
}


private void getFactor(int i) {
boolean factor2 = isFactor(i);
if(factor2){
System.out.println("质数为--:" + i);
return;
}
if(i>2){
for (int j = 2; j <= i; j++) {
//判断取出的J是不是质数
factor2 = isFactor(j);
if(factor2 && i%j==0 ){
System.out.println("质数为:" + j);
getFactor(i/j);
break;
}
}
}
}


/**
* 判断一个数是不是素数
* @param j
* @return
*/
private static boolean isFactor(int j) {
int cnt = (int) Math.sqrt(j);
if(j==2){
return true;
}
for (int i = 2; i <= cnt; i++) {
if(j%i==0){
return false;
}
}
return true;
}


}
0 0
原创粉丝点击