Программа неверно считает делители числа
Проблема в том, что программа неверно считает кол-во делителей. Я не могу понять в чем заключается проблема.
Условие задачи: Найдите числа большие 1000000, сумма и произведение делителей которых нечётны. В ответе укажите наименьшие 6 таких чисел, количество делителей которых больше 40. Для каждого найденного числа выведите количество его делителей. В ответе запишите найденные числа в порядке возрастания, справа от каждого числа запишите количество его делителей.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int main(){
long long dd,cc,ss,k;
k=0; //счетчик для цикла while
dd=1; //произведение делителей
ss=0; //сумма делителей
cc=0; //кол-во делителей
long long x=1000000; //число
while(k!=6){
for(int i = 1; i<sqrt(x)+1; ++i){
if(x%i==0){
ss+=i;
dd=dd*i;
++cc;
}
}
if(cc>40 && dd%2==0 && ss%2==0){
cout<<cc<<" "<<x<<'\n';
ss=0;
dd=1;
cc=0;
++k;
}
++x; //????????? ?
}
return 0;
}```