Tasks Details
  
    
    
      
        
           
        
          
        
       
      
        
          
          
          
          
            
              
                
        
        
          
  
    
      
    
      
    
  
                        
 
                      
                        
  
  
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
  
          
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
        
        
    
       
    
  
          
            
          
        
       
    
   
 
                      
                        
  
  
  
    
      
    
      
        
          
            
              
              
            
            
              
                
              
              
          
        
      
    
  
                        
  
    
    
      
        
          
            
        
    
  
  
  
    
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
           
        
      
       
    
      
      
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
        
        
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
          
            
              
              
            
             
              
             
           
        
      
       
    
  
          
            
          
        
       
    
   
 
                      
                    
                  
                
              
            
          
          
        
      
    
  
    
          easy
        
        
            1.
            
              CountFactors
            
          
          
            Count factors of given number n.
          
        
  
    
    Task Score
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Correctness
    
    
  
  
    
      
        
          
            
        
      
    
  
          
              100%
            
          
  
    
    Performance
    
    
  
  
    
      
        
          
            
        
      
    
  
        
              100%
            
          A positive integer D is a factor of a positive integer N if there exists an integer M such that N = D * M.
For example, 6 is a factor of 24, because M = 4 satisfies the above condition (24 = 6 * 4).
Write a function:
def solution(N)
that, given a positive integer N, returns the number of its factors.
For example, given N = 24, the function should return 8, because 24 has 8 factors, namely 1, 2, 3, 4, 6, 8, 12, 24. There are no other factors of 24.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..2,147,483,647].
 
Copyright 2009–2025 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.
              
            
          
            Solution
            
            
              
                
              
            
          
          
          
            
              Programming language used Python
            
          
          
            
            
              Time spent on task 13 minutes
              
            
            
          
          
          
            
              
                
                  Notes
                  
                    
                  
                
               
              
                
              
              
                
                  
                    
                  
                  
                  
                  
                  
                    
                  
                  
                    
                      
                        
  
  
                      
                        
                          not defined yet
                        
                      
                      
                    
                    
                  
        Code: 20:50:39 UTC,
        
          java,
        
        
          autosave 
        
      
      
      
      
    
        Code: 21:03:11 UTC,
        
          py,
        
        
          autosave 
        
      
      
      
      
    # you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
import math;
def solution(N):
    # write your code in Python 3.6
    NumberFactor=2; #one and the number itself
    if(N==1):
        return 1;
    if(N==2):
        return 2;
    squareN=int(math.sqrt(N)) +1;
    #print(squareN)
    
    for elem in range (2,squareN):
        if(N%elem==0):
            NumberFactor+=2;
    
    if( (squareN-1) * (squareN-1) ==N):
        NumberFactor-=1;
    return NumberFactor
    pass
            
        Code: 21:03:12 UTC,
        
          py,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    # you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
import math;
def solution(N):
    # write your code in Python 3.6
    NumberFactor=2; #one and the number itself
    if(N==1):
        return 1;
    if(N==2):
        return 2;
    squareN=int(math.sqrt(N)) +1;
    #print(squareN)
    
    for elem in range (2,squareN):
        if(N%elem==0):
            NumberFactor+=2;
    
    if( (squareN-1) * (squareN-1) ==N):
        NumberFactor-=1;
    return NumberFactor
    pass
            
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 21:03:16 UTC,
        
          py,
        
        
          verify,
          
            
              result: Passed
            
          
          
        
      
      
      
      
    # you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
import math;
def solution(N):
    # write your code in Python 3.6
    NumberFactor=2; #one and the number itself
    if(N==1):
        return 1;
    if(N==2):
        return 2;
    squareN=int(math.sqrt(N)) +1;
    #print(squareN)
    
    for elem in range (2,squareN):
        if(N%elem==0):
            NumberFactor+=2;
    
    if( (squareN-1) * (squareN-1) ==N):
        NumberFactor-=1;
    return NumberFactor
    pass
            
          Analysis 
          
            
          
        
        
          
  
  
  
        Code: 21:03:18 UTC,
        
          py,
        
        
          final,
          
            score: 
              
                100
              
              
          
          
        
      
      
      
      
    # you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
import math;
def solution(N):
    # write your code in Python 3.6
    NumberFactor=2; #one and the number itself
    if(N==1):
        return 1;
    if(N==2):
        return 2;
    squareN=int(math.sqrt(N)) +1;
    #print(squareN)
    
    for elem in range (2,squareN):
        if(N%elem==0):
            NumberFactor+=2;
    
    if( (squareN-1) * (squareN-1) ==N):
        NumberFactor-=1;
    return NumberFactor
    pass
            Analysis summary
            
  The solution obtained perfect score.
          Analysis 
          
            
          
        
        
          
  
    
      Detected time complexity:
        
          O(sqrt(N))
        
        
      
        
          expand all 
        
        Correctness tests
      
      
        
        
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                4.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                5.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                6.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                7.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                8.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                9.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                10.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
        
          expand all 
        
        Performance tests
      
      
        
        
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                1.
              
              
              
                
                  0.036 s
                
              
              
              
                
                  OK
                
                
              
            
                2.
              
              
              
                
                  0.040 s
                
              
              
              
                
                  OK
                
                
              
            
                3.
              
              
              
                
                  0.040 s
                
              
              
              
                
                  OK