#include<cstdio>
#include<iostream>
using namespace std;
typedef long long LL;
const int MAXN = 1e4;
int prime[MAXN + 10];
void getprime()
{
fill(prime,prime + MAXN,0);
for(int i = 2; i <= MAXN; i++)
{
if(!prime[i]) prime[++prime[0]] = i;
for(int j = 1; j <= prime[0] && prime[j] <= MAXN / i; j++)
{
prime[prime[j] * i] = 1;
if(i % prime[j] == 0) break;
}
}
}
LL factor[100][2];
int fatcnt;
int getfactor(LL x)
{
fatcnt = 0;
LL tmp = x;
int cnt = 0;
for(int i = 1; prime[i] <= tmp / prime[i]; ++i)
{
factor[fatcnt][1] = 0;
if(tmp % prime[i] == 0)
{
factor[fatcnt][0] = prime[i];
while(tmp % prime[i] == 0)
{
if(!cnt)
{
cout << prime[i];
cnt++;
}
else
{
cout << '*' << prime[i];
cnt++;
}
factor[fatcnt][1]++;
tmp /= prime[i];
}
fatcnt++;
}
}
if(tmp != 1) // 最后永远剩一个 很神奇。
{
factor[fatcnt][0] = tmp;
factor[fatcnt++][1] = 1;
if(!cnt)
{
cout << tmp;
cnt++;
}
else
{
cout << '*' << tmp;
cnt++;
}
}
return fatcnt;
}
int main()
{
int a,b;
cin >> a >> b;
getprime();
for(int i = a; i <= b; ++i)
{
int n;
cout << i << '=';
getfactor(i);
cout << endl;
}
return 0;
}
给定区间整数分解 by kuangbin模板
最新推荐文章于 2020-11-07 21:09:05 发布