Elementu skaits ar nepāra koeficientiem dotajā diapazonā

Elementu skaits ar nepāra koeficientiem dotajā diapazonā
Izmēģiniet to GfG Practice #practiceLinkDiv { display: none !important; }

Dots diapazons [ n m ] atrast to elementu skaitu, kuriem ir nepāra faktoru skaits dotajā diapazonā ( n un m ieskaitot). 
Piemēri:  
 

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 


 

Ieteicamā prakse Saskaitiet nepāra faktorus Izmēģiniet to!


A Vienkāršs risinājums ir cilpa cauri visiem skaitļiem, sākot no n . Katram skaitlim pārbaudiet, vai tam ir pāra faktoru skaits. Ja tam ir pāra faktoru skaits, palieliniet šādu skaitļu skaitu un visbeidzot izdrukājiet šādu elementu skaitu. Lai efektīvi atrastu visus naturāla skaitļa dalītājus, atsaucieties Visi naturāla skaitļa dalītāji
An Efektīvs risinājums ir novērot modeli. Tikai tie skaitļi, kas ir ideāli kvadrāti ir nepāra skaits faktoru. Analizēsim šo modeli, izmantojot piemēru.
Piemēram, 9 ir nepāra skaits faktoru 1 3 un 9. 16 ir arī nepāra skaits faktoru 1 2 4 8 16. Iemesls tam ir skaitļiem, kas nav ideālie kvadrāti, visi faktori ir pāru veidā, bet ideālajiem kvadrātiem viens faktors ir viens un padara kopējo summu par nepāra.
Kā diapazonā atrast perfektu kvadrātu skaitu?  
Atbilde ir atšķirība starp kvadrātsakni no m un n-1 ( nevis n
Ir neliels brīdinājums. Kā abi n un m ir iekļaujoši, ja n ir ideāls kvadrāts, mēs saņemsim atbildi, kas ir mazāka par faktisko atbildi. Lai to saprastu, apsveriet diapazonu [4 36]. Atbilde ir 5, t.i., skaitļi 4 9 16 25 un 36. 
Bet, ja mēs to darām (36**0.5) - (4**0.5), mēs iegūstam 4. Tātad, lai izvairītos no šīs semantiskās kļūdas, mēs pieņemam 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>   

Izvade:  

Count is 8 


Laika sarežģītība: O(1)
Palīgtelpa: O(1)