一种 O( 值域 )时间预处理 O(1) 时间求最大公约数( gcd )的算法
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#include<map>
#include<vector>
#define ll long long
#define llu unsigned ll
using namespace std;
const int mod=998244353;
const int maxn=5050;
const int maxm=1000;
const int maxx=1000100;
int prime[maxx],fac[maxx][3],gcd[maxm+10][maxm+10];
int a[maxn],b[maxn],cnt,n;
bool ha[maxx];
void Prime(void)
{
fac[1][0]=fac[1][1]