資源限制
時間限制:1.0s 記憶體限制:512.0mb
問題描述
求出區間[a,b]中所有整數的質因數分解。
輸入格式
輸入兩個整數a,b。
輸出格式
每行輸出乙個數的分解,形如k=a1*a2*a3...
(a1<=a2<=a3.
..,k也是從小到大的)
(具體可看樣例)
樣例輸入310
樣例輸出3=
34=2
*25=
56=2
*37=
78=2
*2*2
9=3*
310=2
*5提示 先篩出所有素數,然後再分解。
資料規模和約定
2<=a<=b<=
10000
剛開始寫超時了,如下:
#include
#include
#include
using
namespace std;
int dp[
10000]=
;//判斷是否為質數
bool
check
(int value)
intmain()
} cout<
}return0;
}
後來使用空間換取時間,來用乙個陣列儲存質數再判斷:
#include
#include
#include
using
namespace std;
int dp[
10000]=
;//生成質數陣列,存放0或者1,1代表是,0代表不是
void
setnum()
dp[i]=1
;}}int
main()
} cout<
}return0;
}
這樣的話可以通過 藍橋杯 試題 基礎練習 分解質因數
問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 2 2 5 56 2 3 7 78 2 2 2 9 3 3 10 2 ...
藍橋杯 試題 基礎練習 分解質因數
題意 求出區間 a,b 中所有整數的質因數分解。思路 我們可以先求出從2到b之間所有的素數,把這些素數插入陣列,然後每次從頭遍歷這個素數陣列,如果當前的數能整除素數,那麼跟新新的當前的值,及除以素數,然後從頭開始重新遍歷素數陣列。如果不能整除當前陣列,那麼就 嘗試下乙個素數!include usin...
藍橋杯 基礎練習 分解質因數
首先先篩選出素數陣列,不用太大也不要太小,我這裡選了10000過了 然後用乙個while迴圈逐級判斷,不能直接輸出,把結果放在乙個陣列裡最後將得出的結果排序最後再輸出即可 本題發現乙個問題,memset函式在給陣列賦值時,如果不是賦0那麼在陣列範圍很大時比如10000時可能就會出問題,本題出了一次很...