題目詳情
小強最近在學初等數論,老師給他們出了一個課後習題,那就是給你兩個正整數A,B(0<A,B<2^60),判斷他們的素因子集合是否相同,小強剛接觸數論,想了好一會還是沒能想出來,你能幫助他嗎?
輸入描述:
輸入包含多組測試數據,每組測試數據包含兩個正整數A,B,以文件結束。
輸出描述:
對於每組測試數據如果A和B的素因子集合相同則輸出“YES”,否則輸出“NO”。
答題說明
輸入樣例:
2 8
4 9
10 50
輸出樣例:
YES
NO
YES
思路:這個問題可分解爲a的素數因子集合是否屬於b的和b的素數因子集合是否屬於a的,對於a的素數因子集合是
否屬於b的,我們可以不斷的求a與b的最大公約數,然後整除a,直到a等於1(即“yes”),或者最大公約數爲1
(即“no”),求最大公約數我用的是二進制歐幾里得什麼的(我也不知道叫什麼名字,反正知道怎麼用),好
像蠻快得。
代碼如下: