2
我開始着手編寫一個項目,該項目可以查找給定輸入數字的所有素數因子。尋找素數因子C++
int checkPrimeDivisors = 0;
int x = 0;
bool isPrime(int someNumber) {
bool status = true;
for (int z = 2; z <= sqrt(someNumber); z++) {
if (someNumber % z == 0)
return false;
}
return true;
}
int main() {
cin >> x;
for (int someNumber = 1; someNumber < x; someNumber++) {
if (x % someNumber == 0 && someNumber == isPrime(someNumber))
cout << someNumber << endl;
}
return 0;
}
這是我想出的代碼。當我檢查所有的因數,並省略了someNumber == isPrime(someNumber)時,工作循環,但是一旦我添加了條件檢查,它根本不打印除數。 我似乎無法弄清楚有什麼問題,幫助將不勝感激。
無關:重複呼叫是首要的將是殺氣。研究使用素數篩選算法並緩存結果。 – user4581301
通過將'x'輸入的數字與'isPrime()'的布爾結果進行比較,你期望完成什麼。你可以嘗試[向你的橡皮鴨解釋](https://en.wikipedia.org/wiki/Rubber_duck_debugging)? –
在您的'isPrime'函數中,您從不使用'status'變量。而不是'sqrt',你可以做'z * z <= someNumber',這比計算平方根便宜。 – Carl