給定乙個整數,求出該整數的所有質因數

2021-08-18 01:15:41 字數 744 閱讀 8851

題目:質因數分解,給定乙個整數,求該數的所有質因數,例如 90 = 2*3*3*5。

質數又稱素數,有無限個。乙個大於1的自然數,如果除了1和它自身外,不能被其他自然數整除(除0以外)的數稱之為素數(質數);否則稱為合數。根據算術基本定理,每乙個比1大的整數,要麼本身是乙個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的。

在自然數域內,質數是不可再分的數,是組成一切自然數的基本元素。 比如,10 是由兩個 2 和兩個 3 組成的,正如水分子是由兩個 h 原子和乙個 o 原子組成的一樣。只是和化學世界不同,質數有無窮多個,因此算術世界的元素也就有無窮多個。算術世界內的一切物件、定理和方法,都是由其基本元素質數組成的。

首先判斷乙個數是否為素數的函式:

//判斷輸入整數n是否為素數,也就是質數

bool iszs(int n)

}return true;

}

然後遞迴求解所有的質因數:

#include #includeusing namespace std;

//判斷輸入整數n是否為素數,也就是質數

bool iszs(int n)

}return true;

}//輸出整數n的所有質因數

void findallzys(int n)

if(n==2)

if(iszs(n))

return

Just for fun 分解乙個正整數的質因數

為什麼我要記錄這個問題,因為之前面試的時候遇到過,當時自己寫的演算法不好,所以,在此記錄一下 是基於python3寫的 人生苦短,寫演算法請用python,web的話請用php def prime n l while n 1 for i in range 2,n 1 if n i 0 n int n...

給定乙個整數序列,請找出這個整數序列的中間數的值。

問題描述 在乙個整數序列a1,a2,an中,如果存在某個數,大於它的整數數量等於小於它的整數數量,則稱其為中間數。在乙個序列中,可能存在多個下標不相同的中間數,這些中間數的值是相同的。給定乙個整數序列,請找出這個整數序列的中間數的值。輸入格式 輸入的第一行包含了乙個整數n,表示整數序列中數的個數。第...

c 程式設計 給定乙個正整數求出是幾位數並逆序輸出

第一步 把輸入的數字轉為字串n.tostring 第二步 求出字串的長度即為正整數的位數 第三步 從後向前逆序輸出 附 using system using system.collections.generic using system.linq using system.text 給乙個正整數,要...