求一个数的素因子(数很大)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll s[1020],k;
void prime(long long m)//求一个数的素因子
{
ll i;
k=0;
for(i=2;i*i<=m;i++)
{
if(m%i==0)
{
s[k++]=i;
while(m%i==0)
m/=i;
}
}
if(m>1)
s[k++]=m;
}
求多个数的素因子(数不是很大)
素因子保存在vector中
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <cmath>
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
vector<ll> p[maxn];
void getpri(ll kk)
{
ll x=kk;
for(ll i=2;i*i<=x;i++)
{
if(x%i==0)
{
p[kk].push_back(i);
while(x%i==0)
x/=i;
}
}
if(x>1)p[kk].push_back(x);
}