/ / Намиране на броя на функциите на делителите - c ++

Намиране на броя на делителите функция - C + +

int checkdiv(int num)
{
int SqrtOfnumber,i;
SqrtOfnumber=sqrt(num);
int counter=1;
for(i=2;i<SqrtOfnumber;i++)
{
if(num%i==0)
counter++;
}
counter=counter *2;
if(i*i == num)
counter++;
return counter;
}

** В случаите на 2 числа има един и същ брой делители, изходът трябва да е този с най-малка стойност

Примери за въвеждане

2           \ test cases
1 10
1000 2000

Очакван резултат

Between 1 and 10, 6 has a maximum of 4 divisors.
Between 1000 and 2000, 1680 has a maximum of 40 divisors.

Горният код изход

Between 1 and 10, 10 has a maximum of 4 divisors.
Between 1000 and 2000, 1680 has a maximum of 38 divisors.

Функцията връща фалшивия брой делители, докато останалата част от кода работи коректно, Как мога да го поправя?

входът е число, което искам да проверя колко делители има и изхода в броя на делителите

Отговори:

0 за отговор № 1

Решението на проблема е използването двойно за SquarOfnumber

int checkdiv(int x)
{
double SqrtOfnumber;
SqrtOfnumber=sqrt(x);
int counter=1,i;
for(i=2;i<SqrtOfnumber;i++)
{
if(x%i==0)
counter++;
}
counter=counter*2;
if(i*i == x)
counter++;
return counter;
}