【发布时间】:2014-07-14 05:07:00
【问题描述】:
我正在使用模拟Collatz conjecture 的简单脚本对不同的平台和语言进行基准测试。在测试过程中,我发现我的 arduino 卡在种子 447 上,将 int 13121 乘以三得到 -26173。
我的初始代码是`
//made by Hugo K
//jun 13 2014
void setup()
{
Serial.begin(9600);
while (!Serial)
{
;//wait for serial to connect
}
}
void loop()
{
unsigned long starttime;
starttime = millis();
for (int i = 1; i <= 500; i++)
{
int a = i;
while (a != 1)
{
if (a%2 == 0)
{
a = a/2;
}
else
{
a = (a*3) + 1;
}
//Serial.println(a);
}
}
Serial.println(millis() - starttime);
}`
后来被`证实了
void setup()
{
Serial.begin(9600);
while(!Serial)
{
}
}
void loop()
{
int i = 13121;
Serial.println(i *3);
}`
那里的 atmega 微控制器有问题吗?还是 int 13121 有问题会打乱传统的乘法?
【问题讨论】: