求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)
生活随笔
收集整理的這篇文章主要介紹了
求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package Four;
/** 分解質(zhì)因數(shù)* 素?cái)?shù)常用來(lái)分解質(zhì)因數(shù),每個(gè)數(shù)都可以寫成一個(gè)或幾個(gè)質(zhì)數(shù)相乘的形式* 其中每個(gè)質(zhì)數(shù)都是這個(gè)數(shù)的質(zhì)因數(shù),把一個(gè)數(shù)用質(zhì)因數(shù)相乘的形式表示出來(lái),* 就稱為分解質(zhì)因數(shù)* * 題目描述* 求正整數(shù)N(N>1)的質(zhì)因數(shù)的個(gè)數(shù),相同的質(zhì)因數(shù)需要重復(fù)計(jì)算,例如120=2*2*2*3*5* 共有5個(gè)質(zhì)因數(shù)* 對(duì)于每組數(shù)據(jù),輸出N的質(zhì)因數(shù)的個(gè)數(shù)* * */
import java.util.Scanner;
public class PrimeFactor {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("請(qǐng)輸入正整數(shù)N: ");int n = scan.nextInt();//由于不知道一個(gè)數(shù)到底有多少質(zhì)因數(shù),選擇輸入n的平方根可以最大化的減少數(shù)組長(zhǎng)度提高運(yùn)算效率int num = (int) Math.sqrt(n);int[] prime = new int[num];int count = 0;for(int i =2;i<=n;i++){boolean isPrime = true;for(int j =2;j<i;j++){if(i%j==0){isPrime = false;break;}}//將素?cái)?shù)賦值進(jìn)入素?cái)?shù)數(shù)組if(isPrime){for(int k =0;k<prime.length;k++){prime[k] = i;}}//輾除法for(int m = 0;m<prime.length;m++){int factor = prime[m];while(n%factor==0){n/=factor;count++;}}}if(n>1){count++;}System.out.println(count);}
}
總結(jié)
以上是生活随笔為你收集整理的求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: audio标签下方有空隙的原因与解决方法
- 下一篇: 面试题17. 打印从1到最大的n位数