分解質因數的誤區
誤區
我原來的想法是找到除數範圍內的所有質因數,建立了一個素數篩,然後逐個便利判斷是是除數的引述,很是麻煩,而且時間複雜度高,大致為O(n)級別程式碼如下:
package 啊哈添柴;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class 分解質因數 {
static Set<Integer> set=new HashSet<Integer>();
static List<Integer> list=new ArrayList<Integer>();
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
shai(n);//素數篩
int temp=n;
while(temp!=1) {
for (int k : set) {
if(temp%k==0) {
temp/=k;
list.add(k);
break;
}
}
}
System.out.print(n+"=");
for (int i = 0; i < list.size()-1; i++) {
System.out.print(list.get(i)+"*");
}
System.out.println(list.get(list.size()-1));
}
private static void shai(int n) {
boolean a[]=new boolean [n+1];
for (int i = 2; i < a.length; i++) {
if(!a[i]) {
for (int j = 2*i; j < a.length; j+=i) {
a[j]=true;
}
}
}
for (int i = 2; i < a.length; i++) {
if(!a[i]) {
set.add(i);//篩,儲存在map中
}
}
}
}
正解
但是這種打表的時間複雜度太高了,可從從2開始便利,如果有能除以2,就繼續出2,直到把2除盡了,然後後面4,6,8就不能作為因數了。3,5,7同理,程式碼如下:
package 啊哈添柴;
import java.util.Scanner;
/*
* 此題我做的時候出現了一個誤區,就是認為需要找出這個數字之內的所有質因數
* 就是說需要判斷除數是不是都是質因數,但是完全不需要如此
* 因為如果2都除盡了,就不再有4,6,8。3同理。。。。
*
* */
public class 分解質因數2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int temp=n;
System.out.print(n+"=");
for (int i = 2; i <=n; i++) {
if(temp%i==0) {
System.out.print(i);
temp/=i;
if(temp==1) break;//當,所有質因數找到之後,結束迴圈
i--;//保持因數不變,繼續除乾淨
System.out.print("*");
}
}
}
}
相關文章
- 階乘質因數分解
- Just for fun——分解一個正整數的質因數
- 【hdu】口算訓練/二分/質因數分解
- python將輸入的一個正整數分解質因數(map)Python
- P1075 [NOIP2012 普及組] 質因數分解
- HDU 4135 Co-prime(容斥原理+分解質因數)
- 藍橋杯題庫 BASIC-16 分解質因數
- hdu 5698 瞬間移動 【質因數分解求組合數】
- 第六章 數學問題 -------- 6.12 素數及質因數分解
- 質數判斷、質因子分解、質數篩
- 大質數分解模板
- Java分解質因數,如輸入8,輸出8=2*2*2Java
- 【快速因數分解】Pollard's Rho 演算法演算法
- 求最大質因數
- 第七章:因數分解與算數基本定理(1)
- 第七章:因數分解與算數基本定理(2)
- 南沙信奧塞陳老師解一本通題:2032:【例4.18】分解質因數
- 分解質因數——MOOC《零基礎學Java語言》第7周程式設計題1Java程式設計
- 1366: 分解質因子
- 因數分解演算法、週期查詢演算法(簡化)演算法
- 微課|中學生可以這樣學Python(例6.4):因數分解Python
- 醜數,即只包含質因數 2、3 和 5 的正整數。
- C# 輸入一個整數,求質因數C#
- 記一次因為共享變數的犯錯誤變數
- 輸出一個區間內的質數(素數)
- 整數因子分解問題
- Promise 的誤區Promise
- 覆盤歸因,提高交付質量的祕訣
- 系統環境變數中 HTTP_PROXY 的誤區變數HTTP
- 數論概論中的費馬降階法求一個質數分解成2個數的平方和與窮舉法的效率比較
- 【熱點】數字化轉型最致命的4個誤區和3個錯誤
- ACM-ICPC 2018 南京賽區網路預賽__J. Sum【尤拉篩法+質因子分解+思維】ACM
- 軟體的分解-程式語言自帶分解功能
- 資料質量管理之根因分析!
- 智慧數字經營誤區你中招了嗎?
- 怎樣解題|題7.5.12:因數的個數
- 細數企業數字化轉型過程中的十二大誤區
- 用python3求一個正數的因式分解Python