1.1怎樣因式分解?
求出小於該數的所有質數,看是不是可以被該數整除,從而完成因式分解。
(ps:再求n的所有質數時用sqrt()函式,只需要迴圈嘗試 ≤ sqrt(n)的數就行,減少迴圈次數)
另外,每找到乙個因子i,要把n變成n/i,以保證繼續找下乙個因子,正確分解。
2.1.何為完美數?
如果有一數n,其真因數(proper factor,包括1但不包括這個數本身的約數)的總和等於n,則稱之為完美數(perfect number)。
2.2.求解思路:
定義乙個sum,在迴圈求因數時,每得到乙個因數就加到sum裡,當所有因數求完後,即得到了因數的總和,此時判斷是否等於該數即可。
#include
#include
#include
intmain()
//主函式
void
fenjie
(int n)
if(j>k)
}//求出所有的小於n的質數,並且存放的指標m中
printf
("%d="
,n);
int k=0;
l=0;while
(m[l]
*m[l]
<=n)
else l++;}
printf
("%d\n"
,n);
}//質數表求該數字的因子
void
perfect()
}}
printf
("\b "
);
注意!這裡\b後面有個空格,因為\b只是退格,不會刪除最後乙個+,需要乙個空格(" ")來覆蓋,才能達到消去最後乙個 + 的目的。
另外,也可以用陣列
每找到乙個符合條件的完美數,就輸入陣列中a[i],同時計數int j=1,j++。
這樣最後一共找到了 j 個數,只需要前 j - 1 個數輸出為%d+ ,最後乙個數輸出為%d
例項演示
素數表 因式分解 完美數
素數即質數,指在大於1的自然數中,除了1和此整數自身外無法被其它自然數整除的數。該方法用於驗證乙個數是否為素數。例求x是否為素數,只需要驗證1到中是否存在乙個數字x的約數,即能被x整除。該方法用於高效的求出小於任何數n的所有素數。該方法的原理為先用乙個篩子存放所有的數,顯然其中最小的為2且為質數,這...
階乘因式分解
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 給定兩個數n,m,其中m是乙個素數。將n 0 n 2 31 的階乘分解質因數,求其中有多少個m。注 為求冪符號。輸入 第一行是乙個整數s 0 輸出輸出m的個數 樣例輸入 3 100 5 16 2 1000000000 13 樣例...
因式分解總結
因式分解其實是乙個很簡單的應用,這裡做一下小小的總結 計算乙個數的所有因子 這裡只需要找到這個數的平方根的因子,然後再用該數分別除以每個因子,就會找到每個因子對應的另乙個因子 int a 10000 num 0 儲存n的因子 void factor int n a中從0到num 1儲存了n的所有因子...