0
好吧,我正在爲學校做一個小項目,我找不到任何答案,爲什麼這個小小的代碼改變使得它在任何時間完成時都沒有時間編號m獲取更高。看看變量「k」我將它從int更改爲long。運行時差異使用不同數據類型的C++
我試圖找到在在Collatz序列1至1000000
void lengstaRuna() {
cout << "Hæsta tala?:";
int m;
cin >> m;
int lengstaRuna = 0;
int talaLengstuRunu = 0;
int k;
for(int i = 2; i < m; i++) {
int lengd = 1;
k = i;
while(k != 1) {
if(k % 2 == 0) {
k = k/2;
} else {
k = k*3 +1;
}
lengd++;
}
if(lengd > lengstaRuna) {
lengstaRuna = lengd;
talaLengstuRunu = i;
}
}
cout << "Lengsta runa: " << lengstaRuna << endl;
cout << "Tala lengstu runu: " << talaLengstuRunu << endl;
}
void lengstaRuna() {
cout << "Hæsta tala?:";
int m;
cin >> m;
int lengstaRuna = 0;
int talaLengstuRunu = 0;
long k;
for(int i = 2; i < m; i++) {
int lengd = 1;
k = i;
while(k != 1) {
if(k % 2 == 0) {
k = k/2;
} else {
k = k*3 +1;
}
lengd++;
}
if(lengd > lengstaRuna) {
lengstaRuna = lengd;
talaLengstuRunu = i;
}
}
cout << "Lengsta runa: " << lengstaRuna << endl;
cout << "Tala lengstu runu: " << talaLengstuRunu << endl;
}
的問題是簡單的最長序列:爲什麼它運行如此之快,當輸入米 ==百萬?
比什麼快?從什麼改變'm'? –
這個程序的目標是什麼? @Frosti –
您可能想要添加更多平臺詳細信息。 C++標準只聲明瞭sizeof(int)<=''sizeof(long)''等等。所以不知道你在處理什麼,你不能指望深刻的見解。 – BitTickler