C ++%运算符无法正常工作

时间:2013-04-13 16:12:59

标签: 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

我做错了什么?

4 个答案:

答案 0 :(得分:5)

  

我做错了什么?

算术。大于0且小于n的数字不是n的倍数。为了使操作a % n能够提供0,必须存在kk * n = aa。但由于n大于0且始终小于k,因此可能没有((n % a) == 0)

或许您打算写n,每次a10的倍数时都是如此(因此,如果您将值n指定给{{} 1}},当a具有值125)时,循环中的条件将为真。

答案 1 :(得分:4)

更改

 if ((a % n)==0)

 to  if ((n % a)==0)

答案 2 :(得分:1)

你想要的可能是一个数字的所有除数。尝试交换数字:if ((n % a) == 0)

答案 3 :(得分:0)

数学我亲爱的孩子。数学。

12除以10是1余数2。

8除以10是0余数8。