java质因数算法_Java分解任意输入数的质因数算法的实现示例
這篇文章主要介紹了Java實現(xiàn)分解任意輸入數(shù)的質(zhì)因數(shù)算法,涉及java數(shù)學(xué)運算相關(guān)操作技巧,需要的朋友可以參考下
本文實例講述了Java實現(xiàn)分解任意輸入數(shù)的質(zhì)因數(shù)算法。分享給大家供大家參考,具體如下:
分解任意輸入數(shù)的質(zhì)因數(shù):
質(zhì)因數(shù)概念:任何一個合數(shù)都可以寫成幾個質(zhì)數(shù)相乘的形式。其中每個質(zhì)數(shù)都是這個合數(shù)的因數(shù),叫做這個合數(shù)的分解質(zhì)因數(shù)。分解質(zhì)因數(shù)只針對合數(shù)。
例如:12 = 2x2x3 18 = 2 x 3 x 3等等
下面來講解一下這個算法的思路:第一:我們首先寫一個求素數(shù)的函數(shù);第二;我們做一個分解質(zhì)因數(shù)的函數(shù),然后在其中引入素數(shù)函數(shù)來判斷是否為素數(shù);
下面給出代碼(僅供參考):
package javastudy;
import java.util.*;
public class Testit3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int number;
number = in.nextint();
factor(number); //函數(shù)調(diào)用
in.close(); //關(guān)流
}
static void factor(int number) {
if(isPrime(number)) //首先進(jìn)行判斷是否為素數(shù),如果是就直接輸出
{
System.out.print(number);
}
for (int i = 2; i <= number - 1; i++) {
if (number % i == 0) {
System.out.print(i + "\t");
int num = number / i; //進(jìn)行一次分解num就要變一次!
if (isPrime(num)) { //判斷是否為素數(shù),是的話就直接輸出這個數(shù)字
System.out.print(num);
} else { //不是素數(shù)就繼續(xù)分解
factor(number / i); //利用函數(shù)遞歸的思想
}
// return ;
break; //分解完了就退出
}
}
}
//判斷是否為素數(shù)的函數(shù)
static Boolean isPrime(int number) {
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
運行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的java质因数算法_Java分解任意输入数的质因数算法的实现示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 微信自定义菜单开发_微信公众号
- 下一篇: java 假设当前时间_Java如何比较