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