當難倒根據行爲我敢肯定,這只是我是真的很愚蠢,但我寫的編程'是顯示的行爲,我只是無法理解。該計劃尋找1到10之間的所有數字都可以被整除的數字(這是項目歐拉解決方案的前身)。尋找倍數
我的代碼工作 - 這是在Python:
for i in range(1, 10000):
check = 1
for j in range(2, 10):
if i % j == 0:
continue
else:
check = 0
break
if check == 1:
print i
break
並正確找到最低的這樣的數字是2520。我想這是更有效的,而且我認爲,如果你只是看它是否數字可以從6到10整除,你會測試同樣的事情。
然而,將其更改爲
for j in range(6, 10)
,並返回504!我用C++和Python編寫了它們,它們都做同樣的事情 - 我真的不明白!這顯然是錯誤的 - 它顯然不能被10整除!
我不明白爲什麼我的代碼時,這是改變突然停止工作。我特別不明白爲什麼測試在6至10範圍內的倍數不是邏輯上等同於範圍爲2〜10。
對於那些更偏向於C++:
#include <iostream>
using namespace std;
int main(){
for(int i = 1; i < 10000; i++){
int check = 1;
for(int j = 6; j < 10; j++){
if(i % j == 0){
continue;
} else {
check = 0;
break;
}
}
if(check == 1){
cout << i << endl;
break;
}
}
}
'範圍(6,10)'不給你的想法。它會產生'[6,7,8,9]' – devnull
詳細說明,爲了得到範圍爲'm'到'n'的數字(包括兩端),你需要'range(m,n + 1)'。 – devnull
@ RaphaelMiedl的回答是正確的。另外,如果你使用的是Python 2.x,你應該使用''xrange''而不是''range'作爲循環。 ''range''生成實際的列表,''xrange''只是產生一個生成器,當你迭代它的時候它會生成列表中的數字,所以它更加高效,特別是對於大數字。 – aruisdante