2013-06-19 50 views
-1

这是一个C语言函数,我对这个函数有点麻烦。我需要出示什么样的r值出来的时候的6或10或13我将值输入功能:不清楚模数函数c语言

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

while(val%r){ 
r--; 

} 
return r; 

} 

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

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

+1

看起来像是对我的首要考验(虽然不好)。质数将返回1,否则返回最大因子。 –

回答

3

自己测试:4 % 2。 当%运算符返回除法的其余部分时,结果应为0

while(x % y) {}翻译在这方面是这样的:只要x是不是整除的y,做一些事情,从而“做什么”你的情况减少y

2

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

它翻译为“虽然是一个从余数(r不是val倍),减1 r和再次检查。一旦清洁因子被发现(val % r is 0),返回系数(r)。

这里是一个JavaScript端口输出样本:

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

我重写了它在JS,你可以取消注释alert(...)网上看到输出为6,10,和13