我正在努力實現這個正確的。我想創建一個函數來確定用戶輸入userNum
的所有除數,並將它們輸出給用戶。當userNum
= 16我得到的輸出1 16 2 8.我沒有想到命令是正確的,但我錯過了4,並努力找出原因。有什麼想法嗎?我試圖在theta(sqrt(num))效率中做到這一點。使用theta(n)效率打印除數
void PrintDivisors(int num);
int main()
{
int userNum;
//Request user number
cout << "Please input a positive integer >=2:" << endl;
cin >> userNum;
PrintDivisors(userNum);
return 0;
}
void PrintDivisors(int num)
{
int divisorCounter;
for (divisorCounter = 1; divisorCounter < sqrt(num); divisorCounter++)
{
if (num % divisorCounter == 0 && num/divisorCounter != divisorCounter)
cout << divisorCounter << endl << num/divisorCounter << endl;
else if (num % divisorCounter == 0 && num/divisorCounter == divisorCounter)
cout << divisorCounter << endl;
}
}
更新:我把所有的數字印刷,但仍在試圖確定如何將其打印出來,以便同時THETA開方內剩餘的(n)的效率
divisorCounter
@huck_cussler對不起我不是以下。這就是我在我的循環沒有? – StormsEdge
是的,那是你停止循環的條件。當num爲16時,考慮這種情況的含義。 –