我的代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int N,M,x,s,a[10000001],b[10000001];
int gcd(int a,int b)//gcd函数
{
return b>0?gcd(a,a%b):a;
}
int main()
{
int i,j,k=0,t,f;
cin>>N>>M;
for(i=1;i<=N;i++)//输入N个数
cin>>a[i];
for(i=1;i<=M;i++)//一到M一个个判断
{
f=1;//flag
for(j=1;j<=N;j++)//一到N要求全符合
if(gcd(max(i,a[j]),min(i,a[j]))!=1)//辗转相除法要求前面的数大,后面xiao
{
f=0;//改变flag
break; //直接退出节省时间,不过即使是1s的时间限制应该也不用加
}
if(f==1)//如果i和全部的a[j]的公约数为1
{
s++;//计数器
//a[++k]=i;//记录,代码出错,太慌了,我现在该
b[++k]=i;//注释时发现的
}
}
cout<<s<<endl;
for(i=1;i<=k;i++)
//cout<<a[i]<<endl;
cout<<b[i]<<endl;//一起改
return 0;
}
已经找不到错误了