首页 > 编程知识 正文

求一个数的素因子分解式,因子分解定理是用来求什么的

时间:2023-05-06 17:59:24 阅读:270195 作者:3562

这种方法使用与数据小于1e7,
这种适用于分解1到n所有数的质因子,而且打印出来是从小到大排好序的
首先找到每个数的最小质因子,不停的除以最小素因子,只到x==1
如果是分解单个还是根号n复杂度的更好一点

#include"bits/stdc++.h"using namespace std;typedef unsigned long long ll;ll n,mod=1e9+7;ll visit[10000005],num=1,a[10000005],p[10000005];//p[x]代表x的最小素因子为p[x]void get(ll n){for(ll i=2;i<=n;i++){if(visit[i]==0){a[num++]=i;p[i]=i;}for(ll j=1;j<num&&i*a[j]<=n;j++){visit[i*a[j]]=1;p[i*a[j]]=a[j];if(i%a[j]==0)break;}}}void fenjie(ll x){while(x!=1){cout<<p[x]<<" ";x/=p[x];}}int main(){/*220078001 827425989*/ cin>>n; get(n); fenjie(n); return 0;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。