問題描述
求出區間[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 #include6using 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 提示先篩出所...