C++ is quite expressive:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> readinput()
{
size_t n;
cin >> n;
vector<int> v(n);
for (auto & x : v)
cin >> x;
return v;
}
vector <int> solve(const vector<int> & inseq)
{
auto size = inseq.size();
vector<int> best(size);
for (size_t j=0; j<size; ++j)
{
vector<int> prev;
for (size_t k=0; k<j; ++k)
if ( inseq[j] % inseq[k] == 0)
prev.push_back(best[k]);
best[j] = prev.size() > 0 ? 1 + *max_element(prev.begin(), prev.end()) : 1;
}
return best;
}
int main()
{
auto inseq = readinput();
auto best = solve(inseq);
cout << *max_element(best.begin(), best.end()) << endl;
}