編輯問題是發現數字的因子,如1,3,6,10,15其次n *(n + 1)/ 2模式。我得到了答案,謝謝邏輯背後的數字代碼
我正在經歷一段經驗豐富的程序員以下代碼片段。
int number = 0;
int i = 1;
while(NumberOfDivisors(number) < 500){
number += i;
i++;
我試了很多,但我不明白以下部分代碼。
number += i;
i++;
爲什麼他不只是增加數字本身?如果他使用相同的代碼,在執行過程中不會丟失一些數字嗎?它背後的邏輯是什麼?
下面是代碼
private int NumberOfDivisors(int number) {
int nod = 0;
int sqrt = (int) Math.Sqrt(number);
for(int i = 1; i<= sqrt; i++){
if(number % i == 0){
nod += 2;
}
}
//Correction if the number is a perfect square
if (sqrt * sqrt == number) {
nod--;
}
return nod;
}
的其餘部分我理解上述部分。無法理解第一部分。
作爲答案的人說 迭代應該是這樣的:
NumberOfDivisors(0)
0 += 1
NumberOfDivisors(1)
1 += 2
NumberOfDivisors(3)
3 += 3
NumberOfDivisors(6)
等
他爲什麼要消除2,4,5等???
目前尚不清楚,從這個代碼他爲什麼這樣做 - 你必須提供更多的代碼或告訴程序做什麼。 – Abraham
實際應該做的代碼是什麼? NumberOfDivisors的實現是什麼? – phant0m
似乎是至少有500個因子得到第一個數n(n + 1)/ 2的循環......但是對於什麼?那麼代碼的結尾可能會給我們一個提示 – Kwariz