Pagini recente » Cod sursa (job #3153626) | Cod sursa (job #345608) | Cod sursa (job #2229383) | Cod sursa (job #1379450) | Cod sursa (job #1302440)
#include <cstdio>
#define MOD 666013
#define Nmax 50010
using namespace std;
int n , i , j , x , SOL;
int t[Nmax] , a[Nmax] , rang[Nmax];
bool sel[Nmax];
int multime(int nod)
{
if (t[nod] != nod) t[nod] = multime(t[nod]);
return t[nod];
}
void reuneste(int x , int y)
{
x = multime(i); y = multime(j);
if (x == y) return;
if (rang[x] < rang[y]) t[x] = y;
else t[y] = x;
if (rang[x] == rang[y]) rang[x]++;
}
int main()
{
freopen("autobuze.in","r",stdin);
freopen("autobuze.out","w",stdout);
scanf("%d", &n);
for (i=1;i<=n;++i)
{
scanf("%d" , &a[i]);
t[i] = i;
}
for (i=1;i<=n;++i)
for (j=1;j<=n;++j)
if (a[i] % a[j] == 0) reuneste(i,j);
for (i=1;i<=n;++i)
{
x = multime(i);
if (!sel[x]) sel[x] = true , SOL++;
}
printf("%d\n", SOL);
return 0;
}