試題 基礎練習 分解質因數

2022-06-27 13:06:09 字數 997 閱讀 4309

問題描述

求出區間[a,b]中所有整數的質因數分解。

輸入格式

輸入兩個整數a,b。

輸出格式

每行輸出乙個數的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是從小到大的)(具體可看樣例)

思路:1.首先篩出素數(也即標記哪些數是素數,哪些不是):

用prime陣列的值標記素數,prime[i]=0表示:i為素數;prime[i]=1表示:i不為素數;

2.然後獲得[a,b]中每個數的質因子乘積形式---把問題分解為小問題:得到x的質因子乘積形式

3.得到x的質因子乘積形式:

用乙個while迴圈(迴圈終止條件為得到x的質因子乘積形式,迴圈找質因子t(範圍在2到x之間,而且要prime[t]==0),若t符合條件,則把t加到ans陣列中(ans陣列存x的所有質因子),同時改變x的值(x=x/t),此時判斷x的值是否為1,如果為1,表示分解結束,輸出x的質因子乘積形式,並且退出迴圈;否則,while迴圈繼續。

1 #include2 #include3 #include4 #include5 #include6

using namespace std;

7 #define maxn 10000

8int

prime[maxn],ans[maxn];9//

ans陣列存乙個數的因子,prime[i]陣列標記i不為素數 val=0表示i為素數,否則不為素數

1011

intmain()

23if(count>=1)26}

27}2829

for(int i=a;i<=b;i++)

41if(x==1) break;42

}43if(x==1) break;44

}45 sort(ans,ans+num);//

必須要對因子進行排序

46for(int h=0;h)50}

51return 0;

52 }

基礎練習 分解質因數

基礎練習 分解質因數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1 a2 a3.a1 a2 a3.k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 ...

基礎練習 分解質因數

題目鏈結藍橋杯 基礎練習 題解 問題描述 求出區間 a,b 中所有整數的質因數分解。include using namespace std int a 10000 int main int argc,char argv for int i m i n i int num i 每次數值會發生改變,故用...

基礎練習 分解質因數

問題描述 求出區間 a,b 中所有整數的質因數分解。輸入格式 輸入兩個整數a,b。輸出格式 每行輸出乙個數的分解,形如k a1a2a3 a1 a2 a3 k也是從小到大的 具體可看樣例 樣例輸入 3 10 樣例輸出 3 34 22 5 56 23 7 78 222 9 33 10 25 提示先篩出所...