2013-04-13 146 views
-1

在此C++程序中,我列出了由用戶輸入定義的數字的所有除數,我使用%運算符來檢查是否有餘數。C++%操作符不工作

#include <iostream> 
using namespace std; 

int main() 
{ 
    int n; 
    cout<<"List divisors of: "; 
    cin>>n; 
    for (int a=1;a<n;a++) 
    {  
     if ((a % n)==0) 
     { 
     cout<<a<<"- divisor of "<<n<<endl; 
     } 
     else 
     { 
      cout<<a<<endl; 
     } 

    } 
    return 0; 
} 

if ((a % n)==0)條件,從來沒有遇到過這樣打字10的輸出將是:

List divisors of: 10 
1 
2 
3 
4 
5 
6 
7 
8 
9 

我在做什麼錯?

+0

如何顯示的倍數分割?多意味着比N更大的東西,比如2 * N,3 * N等等......你的意思是除數? – Cristy

+1

1/10的剩餘部分是1,2/10是2,3/10是3,你永遠不會達到0,停在9。 – chris

+2

爲什麼你認爲從1到9的所有東西都是10的倍數? –

回答

5

我在做什麼錯?

算術。沒有大於0且低於n的數字是n的倍數。爲了使操作a % n給出0作爲結果,必須存在k這樣的k * n = a。但由於a大於0且始終小於n,因此不可能有這樣的k

也許你的意思是寫((n % a) == 0)代替,這將是真正的每一次na(多,所以如果你的價值分配10n,在循環中的條件爲真時a具有價值12 ,或5)。

+0

除0和負數倍。 :D –

+0

@sftrabbit:對:) –

+0

是的我渾身感慨 – user2277597

1

也許你想要的是所有的除數多項。嘗試交換號碼:if ((n % a) == 0)

0

數學我親愛的男孩。數學。

12除以10是1餘2.

8通過重複從1至N 10爲0剩餘8.