求出n所能分解的素因子。
這個應該是套路題,就是列印素數表,然後利用fac陣列,列舉1~sqrt(n)範圍內的所有素因子p,判斷p是否為n的因子。
還要注意如果在列舉完之後,n仍然>1,那麼必定有乙個大於sqrt(n)的素因子(很有可能就是n本身),這部分也需要處理。
#include
#include
using
namespace std;
const
int maxn=
100010
;struct facto***c[10]
;bool
is_prime
(int n)
return
true;}
int prime[maxn]
,pnum=0;
void
find_prime()
}}intmain()
num++
;//不同素因子的個數+1 }if
(n==1)
break
;//及時退出迴圈 }if
(n!=1)
//按格式輸出結果
for(
int i=
0;i}return0;
}
需要在迴圈外定義sqr,要是在迴圈條件中直接計算sqrt(n)會導致答案出錯。 質因子分解 PAT A1059
include include include using namespace std 陣列都放在外面 const int maxn 10010 bool isprime maxn 判斷是否是素數 int typedef struct yinzi1 yinzi1 yinzi 10 int yzct ...
分解素因子
time limit 1500ms memory limit 10000k 有疑問?點這裡 假設x是乙個正整數,它的值不超過65535 即1 x 65535 請編寫乙個程式,將x分解為若干個素數的乘積。輸入的第一行含乙個正整數k 1 k 10 表示測試例的個數,後面緊接著k行,每行對應乙個測試例,包...
素因子分解
每乙個大於1的正整數都可被唯一的寫成素數的乘積。證明過程有點複雜,但是道理還是很容易講通的,因為每個大於1的數都有乙個素因子,因此我們先用最小的素數2分解 如果因數有2的話 直到不能分解時,選用下乙個素數繼續分解。以780為例,此時得到780 2 360,對360還可以進行3次公因數2的提取,得到4...