質因數分解

2021-09-06 15:47:13 字數 945 閱讀 9263

整數分解(integer factorization)又叫質因數分解(質因子分解)是指把乙個正整數寫成幾個素數的乘積。

最簡單的演算法是,從2到n進行試除,能整除的時候就說明找到了乙個新的因子,而這個過程中由於是從較小的數開始除起所以必然會先找到能整除的最小的素數。

#include void pd(int num) } int main(int argc, const char *argv)

也能夠用非遞迴的方法:

#include void pd(int num) } if (!flag) return; if (num > 1) printf("*"); } } int main(int argc, const char *argv)

最後是篩法,首先通過篩法將2到n中全部的合數排除,單獨找出素數,分解時直接在素數表中用這些素數試除,就能夠加快分解的速度:

#include #include #include #include #define n 1024 int *makeprimelist(int max, int *prime_count) } *prime_count = 0; for (i = 2; i <= max; i++) if (!(*(table + i))) (*prime_count)++; int *lst = (int*)malloc(sizeof(int) * (*prime_count)); int *lst_p = lst; for (i = 2; i <= max; i++) if (!(*(table + i))) *lst_p++ = i; free(table); return lst; } void pd(int num, int *prime_lst, int prime_count) prime_lst_p++; } if (!flag) return; if (num > 1) printf("*"); } } int main(int argc, const char *argv)  

質因數分解

題目16 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完 成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新...

質因數分解

短除法 求乙個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。分解質因數的算式的叫短除法 和除法的性質差不多,還可以用來求多個個數的公因式 求 最大公因數的一種方法,也可用來求 最小公倍數。求幾個數最大公因數 的方法,開始時用觀察比較的方法,即 先把每個數的因數找出來,然後再找出公因數,最...

質因數分解

講乙個數分解為幾個質數相乘的結果 int a maxn 用來存質因數 int b maxn 用來存質因數的個數 int main if n 1 不能忘記這一步操作 輸出 第1種寫法 a a a b b b b c c printf 第一種寫法 for int i 1 i tot i else pri...