點這裡題目描述:
求正整數n(n>1)的質因數的個數。 相同的質因數需要重複計算。如120=2 *2 *2 *3 *5,共有5個質因數。
思路:
1.對2到sqrt(1e9)+1的範圍內進行素數篩得到這個範圍內的素數
2.然後遍歷素數表看是否是輸入的數n的因數,統計個數並用n/prime[i]
3.遍歷完素數表如果最後的n不為1,說明還有質因數在sqrt(1e9)+1到1e9之間,但是這樣的數隻會有乙個(如果有兩個,他們的乘積一定大於1e9),所以我們對統計個數加1就行。
**:
#include using namespace std;
const int maxn = 1e5;
bool is_prime[maxn];
vectorprime;
void init()
}if(n!=1)
ans ++;
cout << ans << endl;
}return 0;
}
牛客網計算機考研複試 KY30 進製轉換
點這裡題目描述 將乙個長度最多為30位數字的十進位製非負整數轉換為二進位制數輸出。思路 模擬十進位制轉為二進位制的過程,用string儲存該數,遍歷這個string,每次保留模2的數,然後除2就行。如十進位制123 十進位制 除二 模二 123 61 1 061 30 1 030 15 0 015 ...
牛客網計算機考研複試 KY8 整數拆分
點這裡題目描述 乙個整數總可以拆分為2的冪的和,例如 7 1 2 4 7 1 2 2 2 7 1 1 1 4 7 1 1 1 2 2 7 1 1 1 1 1 2 7 1 1 1 1 1 1 1 總共有六種不同的拆分方式。再比如 4可以拆分成 4 4,4 1 1 1 1,4 2 2,4 1 1 2。用...
牛客網計算機考研複試 KY3 約數的個數
點這裡題目描述 輸入n個整數,依次輸出每個數的約數的個數 思路1 對每乙個數計算其公約數,遍歷1到sqrt n 之間的數。1 include using namespace std int main cout cnt endl return 0 思路2 當n非常大的時候,第一種方法顯然會超時,這時我...