isprime没有判断1,走程序1是素数。1不是素数,要特判返回false
bool isprime(int a)
{
if(a==1) return false;
int sqr=sqrt(a*1.0);
for(int i=2;i<=sqr;i++)
{
if(a%i==0)
return false;
}
return true;
}
#include<bits/stdc++.h>
using namespace std;
bool isprime(int a)
{
int sqr=sqrt(a*1.0);
for(int i=2;i<=sqr;i++)
{
if(a%i==0)
return false;
}
return true;
}
int main()
{
bool hashtable[10010]={false};
int n,m,temp;
cin>>n>>m;
while(!isprime(n))
n++;
cin>>temp;
hashtable[temp%n]=true;
cout<<temp%n;
for(int i=1;i<m;i++)
{
int step=0;
cin>>temp;
while(hashtable[(temp+step*step)%n])
{
step++;
if(step==n+1)
{
cout<<" -";
break;
}
}
if(step<=n)
{
hashtable[(temp+step*step)%n]=true;
cout<<" "<<(temp+step*step)%n;
}
}
return 0;
}