2013-06-19 100 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