#include<iostream>
#include<bits/stdc++.h>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define ll long long
using namespace std;
ll n,k,a[2000000],p[2000000],t;ll f[2999999];
ll gcd(ll x,ll y){
if(!y)return x;
return gcd(y,x%y);
}
int main()
{
scanf("%lld%lld",&n,&k);
for(ll i=1;i<=k;i++){
scanf("%lld",&a[i]);
}
a[k]=gcd(a[k],n);
for(ll i=1;i<k;i++){
a[i]=gcd(a[i],a[k]);
}
for(ll i=1;i*i<=a[k];i++){
if(a[k]%i==0)
{p[++t]=i;
if(a[k]!=i*i) p[++t]=a[k]/i ;
}
}
sort(p+1,p+t+1);
for(ll i=1;i<k;i++){
f[lower_bound(p+1,p+t+1,a[i])-p]=1;
}
for(ll i=1;i<=t;i++)
if(f[i])
for(ll j=1;j<i;j++)
if(p[i]%p[j]==0){
f[j]=1;
}
for(ll i=1;f[i];i++);
printf("%lld",n/p[i]);
return 0;
}
一、如果x是密码,那么GCD(x,n)是密码
二、如果x,y是密码,那么GCD(x,y)也是密码
所以所有不是密码的因子都不是密码