Есть задача, решаю на плюсах, суть задачи:
На вход даются два числа, n m
n
Нужно найти СУММУ натуральных делителей чисел от n до m;
Тоесть, например:
input: 3 6
output: 11
Код что я написал работает правильно, но на значениях от 1 до 1 000 000 уже идет 12 сек, а дальше и того ложится и не проходит по времени
Если кто знает как еще можно оптимизировать решение, прошу подскажите
Мой код:
#include<bits/stdc++.h>
using namespace std;
set <long long> a;
long long kol=0,kl=0;
void schet(long long n){
for( long long i=1;i<=sqrt(n);i++){
if(n%i==0){
a.insert(i);
a.insert(n/i);
}
}
kl++;
kol+=a.size();
a.clear();
}
int main(){
long long n,m;
cin>>n>>m;
for(long long j=n;j<=m;++j){
schet(j);
}
cout<<kol;
return 0;
}