指定された範囲内で奇数の因数を持つ要素の数
#practiceLinkDiv { 表示: なし !重要; } 範囲を指定すると [ n メートル ] 指定された範囲内で奇数の因数を持つ要素の数を見つけます ( n そして メートル 包括的)。
例:
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
あ シンプルな解決策 から始まるすべての数値をループすることです n 。すべての数値について、因数が偶数であるかどうかを確認します。偶数の因数がある場合は、その数のカウントをインクリメントし、最後にそのような要素の数を出力します。自然数のすべての約数を効率的に見つけるには、次を参照してください。 自然数のすべての約数
アン 効率的なソリューション パターンを観察することです。該当する数字のみ 完全な正方形 奇数の因数を持っています。例を通してこのパターンを分析してみましょう。
たとえば、9 には奇数の因数 1 3 と 9 があります。16 には奇数の因数 1 2 4 8 16 もあります。その理由は、完全平方以外の数値ではすべての因数がペアの形式になっているのに対し、完全平方では 1 つの因数が 1 つであり、合計が奇数になるためです。
範囲内の完全正方形の数を見つけるにはどうすればよいですか?
答えは次の平方根の差です。 メートル そして n-1 ( ない )
少し注意点があります。両方として n そして メートル 包括的である場合 n は完全な平方であり、実際の答えより 1 未満の答えが得られます。これを理解するには、範囲 [4 36] を考慮してください。答えは 5、つまり 4、9、16、25、36 です。
しかし、(36**0.5) - (4**0.5) を実行すると、4 が得られます。したがって、このセマンティック エラーを回避するには、次のようにします。 n-1 。
// 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)