2015-01-25 2 views
-3
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. 

코드의 나머지 수가 핵심적으로 작동하는 동안이 함수는 제수를 false로 반환하고 있습니다. 어떻게 해결할 수 있습니까?

입력이 나는 그것이 얼마나 많은 약수를 확인하고자하는 번호와 제수

+1

을 위해 사용 이중했다 수의 출력 일부 입력의 경우 예상되는 실제 출력은 얼마입니까? –

+0

@JoachimPileborg 입력 값은 제수수에 얼마나 많은 약수와 출력이 있는지 확인하려는 숫자입니다. – mohammed

+0

실제 값을 말해주십시오. 예를 들어,'10'을 입력하면 출력에 대해 무엇을 기대합니까? 실제로 얻는 것은 무엇입니까? –

답변

0

문제에 대한 수정 프로그램은 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; 
} 
관련 문제