PHP 求最大奇約數的和

2021-08-07 23:11:14 字數 1130 閱讀 3086

小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題: 定義函式f(x)為x最大的奇數約數,x為正整數。 例如:f(44) = 11.

現在給出乙個n,需要求出 f(1) + f(2) + f(3)…….f(n)

例如: n = 7

f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21

小易計算這個問題遇到了困難,需要你來設計乙個演算法幫助他。

<?php 

$num = trim(fgets(stdin));

function

jnum

($num)

for($i = 1; $i

<=$m; $i=$i+2)

}hell:

return

$res;

}function

jnum2

($num)

else}}

}hell:

return

$res;

}function

jnum3

($num)

if(($num&0x1) == 0)else

}//$sum = 0;

//for($i = 1; $i<=$num; $i++)

//echo $sum;

//echo jnum2($num);

echo jnum3($num);

開始常規思路,一直除錯的方法1,一直超時,改為方法2,還是超時,沒有什麼本質區別。

換思路。。

求sum(i)的過程中,如果i 為奇數可以直接求,就是 i 本身,即f(i) = i。

問題就是求所有f(i), i為偶數的和。

因為是最大奇約數,所以f(2k) = f(k),所以f(2) + f(4) + … + f(2k) = f(1) + f(2) + … + f(k);

所以,數學歸納法,可以求出通用公式

這個做法還是不容易想到的。。。這麼bt的題。。

最大的奇約數

參考 小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題 定義函式f x 為x最大的奇數約數,x為正整數。例如 f 44 11.現在給出乙個n,需要求出 f 1 f 2 f 3 f n 例如 n 7 f 1 f 2 f 3 f 4 f 5 f 6 f 7 1 1 3 ...

程式設計題 最大的奇約數

小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題 定義函式f x 為x最大的奇數約數,x為正整數。例如 f 44 11.現在給出乙個n,需要求出 f 1 f 2 f 3 f n 例如 n 7 f 1 f 2 f 3 f 4 f 5 f 6 f 7 1 1 3 1 5...

牛客網 最大的奇約數

小易是乙個數論愛好者,並且對於乙個數的奇數約數十分感興趣。一天小易遇到這樣乙個問題 定義函式f x 為x最大的奇數約數,x為正整數。例如 f 44 11.現在給出乙個n,需要求出 f 1 f 2 f 3 f n 例如 n 7 f 1 f 2 f 3 f 4 f 5 f 6 f 7 1 1 3 1 5...