试着解欧拉第14题
trying to solve project euler number 14
我正试图解决欧拉项目14号问题,我的代码几乎准备好了,但它一直让我给出错误的答案。为什么它不计算更多的步骤??谢谢,抱歉没有评论。
#include <iostream>
int collatz_length(int number);
int main() {
using namespace std;
int size_sequence, max_sequence = 0, number_ = 1000000, num;
while (number_>1) {
size_sequence = collatz_length(number_);
if (size_sequence > max_sequence) {
max_sequence = size_sequence;
num = number_;
cout << "size " << size_sequence
<< " starting number " << num << endl;
}
number_--;
}
cout << "The longest sequence has "
<< max_sequence << " steps, starting from the number: " << num << endl;
cin.get();
return 0;
}
int collatz_length(int number) {
using namespace std;
int size_sequence = 0;
while (number > 1) {
if ((number % 2) == 0){
number /= 2;
}
else {
number = (3 * number + 1);
}
size_sequence++;
}
return size_sequence;
}
3*n+1
有可能溢出int
。也许你应该使用uint64_t
?
相关文章:
- 没有找到相关文章