sách gpt4 ăn đã đi

数字的 Collatz 序列

In lại Tác giả: Walker 123 更新时间:2023-11-30 15:46:09 26 4
mua khóa gpt4 giày nike

我正在尝试查找数字的 Collatz 序列。以下代码对数字 113383 执行无限循环。

int collatz(long number) {
int length = 1; //length of the sequence
while (number != 1) {
printf("%ld-", number);
if ((number % 2) == 0)
number /= 2;
khác
number = (number * 3) + 1;
length++;
}
return length;
}
int main() {
printf("%d", collatz(113383));
trả về 0;
}

编辑:科拉茨猜想说序列中的下一个数字是如果数字是偶数,则为 n/2如果数字是奇数则为 3n+1如果数字为 1,则终止

câu trả lời hay nhất

您没有检查该数字是否超出了您的dài。尝试在循环中添加以下打印内容:

...
if (number*3+1 < number) {
printf("overflow after %d iterations\n", length);
phá vỡ;
}
number = (number * 3) + 1;
...

请注意,这是否会溢出 dài 将取决于系统/目标:

/tmp/c $ gcc -o collatz -m32 collatz.c
/tmp/c $ ./collatz
overflow after 120 iterations
/tmp/c $ gcc -o collatz -m64 collatz.c
/tmp/c $ ./collatz

您还可以考虑使用 unsigned long long,即使在 32 位中,它也应该足够大来解决此问题。

关于数字的 Collatz 序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18543885/

26 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress