蓝桥杯--分解质因数

http://47.104.209.207/problem/old1058

先用筛法筛出所有质数,然后对每个数进行质因数分解。

 1 #include<cmath>
 2 #include<iostream>
 3 #include<queue>
 4 #include<vector>
 5 #include<algorithm>
 6 using namespace std;
 7 const int N=10010;
 8 bool vis[N];
 9 int primes[N],cnt;
10 int main(){
11     int a,b;
12     cin>>a>>b;
13     for(int i=2;i<=b;i++){
14         if(!vis[i]){
15             primes[cnt++]=i;
16             for(int j=2*i;j<=b;j+=i){
17                 vis[j]=1;
18             }
19         }
20     }
21     for(int i=a;i<=b;i++){
22         int t=i;
23         cout<<t<<"=";
24         vector<int> res;
25         for(int j=0;j<cnt;j++){
26             while(t%primes[j]==0){
27                 res.push_back(primes[j]);
28                 t/=primes[j];
29             }
30         }
31         if(res.empty()) res.push_back(1);
32         cout<<res[0];
33         for(int i=1;i<res.size();i++){
34             cout<<"*"<<res[i];
35         }
36         cout<<endl;
37     }
38     return 0;
39 }

 

posted on 2021-02-24 11:56  greenofyu  阅读(40)  评论(0编辑  收藏  举报