试着解欧拉第14题

trying to solve project euler number 14

本文关键字:      更新时间:2023-10-16

我正试图解决欧拉项目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 ?

相关文章:
  • 没有找到相关文章