Pagini recente » Cod sursa (job #1067501) | Cod sursa (job #751459) | Cod sursa (job #359328) | Cod sursa (job #2154515) | Cod sursa (job #1766653)
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int nmax=500,vmax=1000,lmax=1000000;
int n,in[nmax+5],npr,pr[nmax+5];
bool ci[nmax+5];
long long di[nmax+5][nmax+5];
long long pre[nmax+5][nmax+5];
void ciur()
{
npr++;
pr[npr]=2;
for(int i=3;i<=n;i=i+2)
if(ci[i]==0)
{
npr++;
pr[npr]=i;
for(int j=i*i;j<=n;j=j+2*i)
ci[j]=1;
}
}
int cmmdc(int a,int b)
{
if(a>b)
swap(a,b);
if(a==0)
return b;
return cmmdc(b%a,a);
}
int main()
{
freopen("indep.in","r",stdin);
freopen("indep.out","w",stdout);
int m,i,j;
long long ans=0;
cin>>n;
for(i=1;i<=n;i++)
cin>>in[i];
ciur();
for(i=0;i<=nmax;i++)
for(j=0;j<=nmax;j++)
pre[i][j]=cmmdc(i,j);
for(i=1;i<=n;i++)
{
for(j=1;j<=nmax;j++)
di[i][j]=di[i-1][j];
di[i][in[i]]++;
for(j=1;j<=nmax;j++)
di[i][pre[in[i]][j]]+=di[i-1][j];
}
printf("%lld\n",di[n][1]);
return 0;
}