面試題 求質因數分解

2021-09-12 10:06:44 字數 1485 閱讀 4548

題目:求乙個數的質因數分解,比如輸入90,輸出2*3*3*5。
解體思路:

要求乙個數n的質因數分解,首先求出n以內的所有質數,將其放入prime陣列內,然後再讓prime[i]去除n,如果能夠整除,那麼這個prime[i]就是n的質因數,否則不是。

求prime的方法是篩法求素數。

**實現

#include#include

using

namespace

std;

bool isprime(int number);//

判斷number是否為素數

void printprime(int number);//

查詢0...number以內的所有素數,沒查到乙個輸出

void printarray(int arry,int len);//

列印陣列

void getprime2(int number,int prime);//

通過isprime(int number)方法來求素數陣列

void getprime3(int number,int prime);//

直接在方法內實現isprime(int number)

//篩法求素數

int getprime(int number,int

prime)

for(i=2;i<=sqrt(number);i++)//

number的質因數肯定小於sqrt(n)}}

for(i=2;i<=number;i++)

}printarray(prime,count);

return

count;}//

判斷是否是素數

bool isprime(int

number)

}return

flag;}//

列印2...number的素數

void printprime(int

number)

}//cout

//列印陣列

void printarray(int arry,int

len)

//將number以內的素數儲存在prime中

void getprime2(int number,int

prime)

}printarray(prime,count);}//

將number以內的素數儲存在prime中

void getprime3(int number,int

prime)

}if(flag)

}printarray(prime,count);

}void

main()

}delete prime;

system(

"pause");

}

posted @

2012-10-13 13:49

xwdreamer 閱讀(

...)

編輯收藏

面試題 求質因數分解

題目 求乙個數的質因數分解,比如輸入90,輸出2 3 3 5。解體思路 要求乙個數n的質因數分解,首先求出n以內的所有質數,將其放入prime陣列內,然後再讓prime i 去除n,如果能夠整除,那麼這個prime i 就是n的質因數,否則不是。求prime的方法是篩法求素數。實現 include ...

質因數分解

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

質因數分解

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