题目链接:互质 - 题目 - Daimayuan Online Judgehttp://oj.daimayuan.top/course/11/problem/812
要在1到m的闭区间内找到与给出数组内的元素都互质的的数,并输出它们。
考虑互质就是不存在公因子,考虑把数组的元素分解成素因子。然后枚举1到m。看是否会有公因子。没有就是答案之一
//#define pei_pei_
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define FI first
#define SE second
#define _for(type,i,a,b) for(type i=(a);i<(b);++i)
#define _efor(type,i,a,b) for(type i=(a);i<=(b);++i)
#define _rfor(type,i,a,b) for(type i=(a);i>(b);--i)
#define _refor(type,i,a,b) for(type i=(a);i>=(b);--i)
#define _sfor(p,st) for(auto &p:st)
#define endl '\n'
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll> pii;
const double pi=acos(-1.0);
const double eps=1e-8;
const int mod=1e9+7;
const int _mod=998244353;
const int inf=0x3f3f3f3f;
const int maxn=100010;
//-------------------------------------------------------------------
int n,m,a[maxn],num[maxn];
//-------------------------------------------------------------------
signed main(){
//ifstream cin("D:\\in.txt");
//ofstream cout("D:\\out.txt");
IOS;
#ifdef pei_pei_
double be=clock();
#endif // err
//==================================================================
int n,m;
cin>>n>>m;
_for(int,i,0,n)cin>>a[i];
_for(int,i,0,n){
int k=a[i];
for(int j=2;j*j<=k;j++){
while(k%j==0){
num[j]++;
k/=j;
}
}
if(k>1){
num[k]++;
}
}
vector<int> ans;
_efor(int,i,1,m){
int k=i;
int jud=1;
for(int j=2;j*j<=k;j++){
if(k%j==0){
if(num[j])jud=0;
while(k%j==0)k/=j;
}
}
if(k>1){
if(num[k])jud=0;
}
if(jud)ans.push_back(i);
}
cout<<ans.size()<<'\n';
_sfor(it,ans)cout<<it<<'\n';
//==================================================================
#ifdef pei_pei_
double en=clock();
cout<<endl<<"time: "<<fixed<<setprecision(8)<<en-be<<" ms";
#endif // err
return 0;
}