2013-04-13 96 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.