求乙個數的因子數及平方數判斷

2021-08-23 12:33:28 字數 522 閱讀 4887

對於乙個自然數n,都可以分解質因子得到如下形式:

怎麼推出來的我也不知道。。。

其中因子數包含自身和1

注意,若要使f(n)為奇數,僅有一種可能,就是e1,e2...都為偶數時,總的因子數才為奇數,而若指數都為偶數,說明這個數必定是乙個完全平方數!

判斷乙個數是否為平方數:

根據數學的等差數列求和公式:

由此可知:任意數的平方都能用乙個初值為1,等差為2的等差數列表示,所以判斷乙個數是不是平方數可以用這個數不斷的減2,如果最後減到為0,那麼這個數就是平方數,否則不是

還有一種方法,可能有時候會丟失精度,雖然目前還沒測出來,至少1e8一下的數完全沒問題

就是return (int)(sqrt(n))*(int)(sqrt(n)) == n ? 1 : 0; 

這個方法肯定比上面的快不少

判斷乙個數是否是完全平方數

利用恒等式 1 3 5 7 2 n 1 n 2 bool issqrt intn 下面是一些關於完全平方數的數學性質 對排除完全平方數有一定的加速作用 性質1 完全平方數的末位數只能是0,1,4,5,6,9。性質2 奇數的平方的個位數字為奇數,十位數字為偶數。證明 奇數必為下列五種形式之一 10a ...

C C ,python判斷乙個數是否為平方數

判斷平方數是乙個簡單的數學問題,c和c 的實現方法比較接近,但是c沒有bool型別,只能夠引用標頭檔案。想要使用開方的函式,必須引用 標頭檔案裡的sqrt函式 include include bool is square int n c 實現 include bool is square int n...

判斷乙個數的素因子個數

有感而發 就寫一下 doge 這裡手動 solemntee include using namespace std typedef long long ll intmain ans if n 1 ans 如果是個素數 n就不會被除到1 cout 輸出乙個非素數的所有素因子 個數 include us...