java 算出所有满足乘积为一个数的素数(也就是质数)
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;
}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
