Программа неверно считает делители числа

Проблема в том, что программа неверно считает кол-во делителей. Я не могу понять в чем заключается проблема.

Условие задачи: Найдите числа большие 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;
}```

Ответы (0 шт):