-1

在这个 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

4 回答 4

5

我究竟做错了什么?

算术。没有大于 0 且小于的数n是 的倍数n。为了使运算a % n得到0结果,必须存在一个数k使得k * n = a. 但由于a大于 0 且始终小于n,因此不可能存在这样的情况k

也许您打算改为编写((n % a) == 0),每次都是 truen的倍数a(因此,如果您将 value 分配10n,则循环中的条件将在avalue 12或时为 true 5)。

于 2013-04-13T16:14:40.020 回答
4

改变

 if ((a % n)==0)

 to  if ((n % a)==0)
于 2013-04-13T16:16:26.783 回答
1

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

于 2013-04-13T16:16:53.363 回答
0

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

12除以10是1余2。

8 除以 10 是 0 余 8。

于 2013-04-13T16:18:08.297 回答