关于模数函数c语言不清楚

时间:2013-06-19 01:45:23

标签: c

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

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

while(val%r){
r--;

}
return r;

}

我不确定我是否误解了这个问题,但其余部分是不是真的?由于0 = false和while语句永远不会达到0,因为r总是小于val并且不等于它,并且每次r减少,剩余部分会变得更大?< / p>

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

2 个答案:

答案 0 :(得分:3)

自己测试:4 % 2。 结果应为0,因为%运算符返回除法的余数。

while(x % y) {}在此上下文中翻译为:只要x y不能被y分割,就可以执行某些操作,即“做某事”减少{{1}}你的情况。

答案 1 :(得分:2)

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

它转换为“虽然分区中有余数(r不是val的因子),但将r减1并再次检查。一旦找到干净因子({{1 }}),返回因子(val % r is 0)。

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

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

我在JS中重写了它,您可以取消注释r行以查看6,10和13的输出