判断i是否可行即判断2*i,3*i,4*i...是否存在。
注意,可能有值相同的情况,如有两个i,
则若i满足条件,ans+=2;
代码:
#include<bits/stdc++.h>
using namespace std;
int mp[1000003];
int main()
{
int n;
while(~scanf("%d",&n))
{
memset(mp,0,sizeof(mp));
int i,j;
for(i=0; i<n; i++)
{
int x;
scanf("%d",&x);
mp[x]++;
}
int ans=0;
for(i=1; i<=1000000; i++)
{
if(mp[i])
{
for(j=i+i; j<=1000000; j+=i)
{
if(mp[j])
{
ans+=mp[i];
break;
}
}
}
}
printf("%d\n",ans);
}
return 0;
}