藍橋杯 試題 基礎練習 分解質因數

2021-10-03 15:44:47 字數 1118 閱讀 6132

資源限制

時間限制: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時可能就會出問題,本題出了一次很...