在这个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 :(得分:5)
我做错了什么?
算术。大于0且小于n
的数字不是n
的倍数。为了使操作a % n
能够提供0
,必须存在k
个k * n = a
。a
。但由于n
大于0且始终小于k
,因此可能没有((n % a) == 0)
。
或许您打算写n
,每次a
是10
的倍数时都是如此(因此,如果您将值n
指定给{{} 1}},当a
具有值1
,2
或5
)时,循环中的条件将为真。
答案 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。