-1

这是一个 C 语言函数,我有点难以理解。r当我在函数中输入 6 或 10 或 13 的值时,我需要显示出什么值:

int factor(int val){
int r=val-1;

while(val%r){
r--;

}
return r;

}

我不确定我是否误解了这个问题,但其余的不是总是正确的吗?由于0 = false和while语句永远不会达到0,因为r总是小于val而不等于它,并且每次r减少余数只会变大?

编辑:刚刚意识到我忘了考虑 6%3 = 0!感谢帮助的人!

4

2 回答 2

3

Test for yourself: 4 % 2. The result should be 0 as the % operator returns the remainder of a division.

while(x % y) {} translates in this context to something like: as long as x is not dividable by y, do something, whereby 'do something' is decrease y in your case.

于 2013-06-19T01:52:30.327 回答
2

本质上,该函数返回输入到该方法的数字的最大因子。

它转换为“当除法有余数时(r不是 的因子val),将 r 减 1 并再次检查。一旦找到干净val % r is 0的因子(),返回因子(r)。

这是一个带有示例输出的 JavaScript 端口:

http://jsfiddle.net/43HxX/2/

我用 JS 重写了它,您可以取消注释该alert(...)行以查看 6、10 和 13 的输出

于 2013-06-19T01:58:20.807 回答