侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

质数因子

Hope
2022-03-24 / 0 评论 / 0 点赞 / 425 阅读 / 611 字
温馨提示:
本文最后更新于 2022-03-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

HJ6 质数因子

思路:

一开始想先筛一下质数,然后用hash去存一下,后来发现不用这样,因为在去判断是不是约数的时候实际上大的合数就被去掉了。
看下面的代码

代码:

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;

int main(){
    long x;
    cin >> x;
    map<int,int> Hash;
    
    for(int i=2;i<=x/i;i++){
	//比如4 4 = 2 * 2 但是在筛2的时候 while循环就把4筛掉了
        while(x%i==0){
            x/=i;
            Hash[i]++;
        }
    }
    if(x>1) Hash[x]++;
    
    for(auto i : Hash){
        while(i.second--) cout<<i.first<<' ';
    }
    return 0;
}

后来又发现,实际上hash都不用开


#include<iostream>
using namespace std;

int main(){
    long x;
    cin >> x;
    
    for(int i=2;i<=x/i;i++){
        while(x%i==0){
            x/=i;
            cout<<i<<' ';
        }
    }
    if(x>1) cout<<x;
    
    return 0;
}
0

评论区