这是一个计算一个数的除数的程序,但它给出的除数比该数字的实际除数少一个。
#include <stdio.h>
int i = 20;
int divisor;
int total;
int main()
{
for (divisor = 1; divisor <= i; divisor++)
{
if ((i % divisor == 0) && (i != divisor))
{
total = total++;
}
}
printf("%d %d\n", i, total);
return 0;
}
数字 20 有 6 个除数,但程序说有 5 个除数。
最佳答案
&& (i != divisor)
表示20
不会被视为除数。如果你想让它被考虑,放弃那部分代码,你会得到整套,{1, 2, 4, 5, 10, 20}
.
即使您不希望将数字计为除数,您仍然可以放弃该代码而只使用 <
而不是 <=
在for
声明。
和:
total = total++;
完全没有必要。它甚至可能是未定义的,我现在懒得去检查,这并不重要,因为没有人长期编写这样的代码:-)
使用其中之一:
total = total + 1;
或(更好):
total++;
关于c - 得到一个太少的除数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423534/