Кількість елементів із непарними факторами в заданому діапазоні

Кількість елементів із непарними факторами в заданому діапазоні
Спробуйте на GfG Practice #practiceLinkDiv { display: none !important; }

Дано діапазон [ п м ] знайти кількість елементів, які мають непарну кількість факторів у заданому діапазоні ( п і м включно). 
Приклади:  
 

Input : n = 5 m = 100 Output : 8 The numbers with odd factors are 9 16 25 36 49 64 81 and 100 Input : n = 8 m = 65 Output : 6 Input : n = 10 m = 23500 Output : 150 


 

Рекомендована практика Порахуйте непарні множники Спробуйте!


А Просте рішення полягає в тому, щоб прокрутити всі числа, починаючи з п . Для кожного числа перевірте, чи є в ньому парна кількість множників. Якщо він має парну кількість множників, збільште кількість таких чисел і нарешті виведіть кількість таких елементів. Щоб знайти всі дільники натурального числа, ефективно зверніться до Усі дільники натурального числа
Ан Ефективне рішення полягає в спостереженні за шаблоном. Тільки ті числа, які є ідеальні квадрати мають непарну кількість факторів. Розберемо цю закономірність на прикладі.
Наприклад, 9 має непарну кількість множників 1 3 і 9. 16 також має непарну кількість множників 1 2 4 8 16. Причина цього полягає в тому, що для чисел, окрім досконалих квадратів, усі множники мають форму пар, але для досконалих квадратів один множник є єдиним і робить підсумок непарним.
Як знайти кількість ідеальних квадратів у діапазоні?  
Відповідь: різниця квадратного кореня з м і n-1 ( не п
Є невелике застереження. Як обидва п і м є включними, якщо п є ідеальним квадратом, ми отримаємо відповідь, меншу за одиницю фактичної відповіді. Щоб зрозуміти це, розглянемо діапазон [4 36]. Відповідь: 5, тобто числа 4 9 16 25 і 36. 
Але якщо ми робимо (36**0,5) - (4**0,5), ми отримуємо 4. Отже, щоб уникнути цієї семантичної помилки, ми беремо n-1 .
 

C++
   // C++ program to count number of odd squares   // in given range [n m]   #include          using     namespace     std  ;   int     countOddSquares  (  int     n       int     m  )   {      return     (  int  )  pow  (  m    0.5  )     -     (  int  )  pow  (  n  -1    0.5  );   }   // Driver code   int     main  ()   {      int     n     =     5       m     =     100  ;      cout      < <     'Count is '      < <     countOddSquares  (  n       m  );      return     0  ;   }   
Java
   // Java program to count number of odd squares   // in given range [n m]   import     java.io.*  ;   import     java.util.*  ;   import     java.lang.*  ;   class   GFG   {      public     static     int     countOddSquares  (  int     n       int     m  )      {      return     (  int  )  Math  .  pow  ((  double  )  m    0.5  )     -     (  int  )  Math  .  pow  ((  double  )  n  -  1    0.5  );      }      // Driver code for above functions      public     static     void     main     (  String  []     args  )      {      int     n     =     5       m     =     100  ;      System  .  out  .  print  (  'Count is '     +     countOddSquares  (  n       m  ));      }   }   // Mohit Gupta_OMG  <(o_0)>   
Python3
   # Python program to count number of odd squares   # in given range [n m]   def   countOddSquares  (  n     m  ):   return   int  (  m  **  0.5  )   -   int  ((  n  -  1  )  **  0.5  )   # Driver code   n   =   5   m   =   100   print  (  'Count is'     countOddSquares  (  n     m  ))   # Mohit Gupta_OMG  <0_o>   
C#
   // C# program to count number of odd   // squares in given range [n m]   using     System  ;   class     GFG     {          // Function to count odd squares      public     static     int     countOddSquares  (  int     n       int     m  )      {      return     (  int  )  Math  .  Pow  ((  double  )  m       0.5  )     -         (  int  )  Math  .  Pow  ((  double  )  n     -     1       0.5  );      }          // Driver code       public     static     void     Main     ()      {      int     n     =     5       m     =     100  ;      Console  .  Write  (  'Count is '     +     countOddSquares  (  n       m  ));      }   }   // This code is contributed by Nitin Mittal.   
PHP
      // PHP program to count    // number of odd squares   // in given range [n m]   function   countOddSquares  (  $n     $m  )   {   return   pow  (  $m     0.5  )   -   pow  (  $n   -   1     0.5  );   }   // Driver code   $n   =   5  ;   $m   =   100  ;   echo   'Count is '      countOddSquares  (  $n     $m  );   // This code is contributed   // by nitin mittal.    ?>   
JavaScript
    <  script  >   // JavaScript program to count number of odd squares   // in given range [n m]   function     countOddSquares  (  n       m  )      {      return     Math  .  pow  (  m    0.5  )     -     Math  .  pow  (  n  -  1    0.5  );      }   // Driver Code      let     n     =     5       m     =     100  ;      document  .  write  (  'Count is '     +     countOddSquares  (  n       m  ));        <  /script>   

Вихід:  

Count is 8 


Часова складність: О(1)
Допоміжний простір: О(1)