暴力求解即可,用容器。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
#include<algorithm>
#include<vector>
#include<map>
using namespace std;
vector<int> v[10000];
int cnt=0;
int pd(int x,int y)
{
int minn=min(x,y);
for(int i=minn;i>=2;i--)
{
if(x%i==0&&y%i==0) return 0;
}
return 1;
}
int main()
{
int n,num;
cin>>n>>num;
v[cnt++].push_back(num);
for(int i=1;i<n;i++)
{
cin>>num;
int flag=0;
for(int j=0;j<cnt;j++)
{
int k=0;
for(k=0;k<v[j].size();k++)
if(pd(v[j][k],num)==0)
break;
if(k==v[j].size())
{
v[j].push_back(num);
flag=1;
break;
}
}
if(flag==0)
v[cnt++].push_back(num);
}
cout<<cnt<<endl;
return 0;
}