0
私は学校向けの小さなプロジェクトを行っていましたが、この小さなコードの変更によって、数字がmになると、高い。変数 "k"を見てください。intからlongに変更しました。ランタイムの相違点C++で異なるデータ型を使用
私は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;
}
質問はシンプルである間このCollatzシーケンスの中で最も長いシーケンスを見つけようとしている:それはなぜそんなに速く実行しない場合、入力メートル == 1000000?
もっと速いですか? 'm'を何から変更しますか? –
このプログラムの目標は何ですか? @Frosti –
プラットフォームの詳細を追加したい場合があります。 C++標準では '' sizeof(int)<= '' sizeof(long) ''などしか書かれていませんので、あなたが扱っていることを知らずに深い洞察を期待することはできません。 – BitTickler