我做了一些简单的代码来测试一个数字,看看它是否是一个素数,但是在给它输入大素数来测试程序在 arduino 上的速度时,它只需要一个长度为 9-/ under-digits 我测试了我的读取函数,它返回整个数字,但“BigNumber”不会解析它,它只是说它的 0
代码:
void Speed(String num)
{
Serial.println("NUM="+num);
BigNumber NUM = num.c_str();//this is where it fails
BigNumber Curr = "1";//start 2 / 'curr++' start of loop
num = "";
... the testing of prime numbers here
如果我输入一个 10 位数字,代码会停止 arduino,输出是这样的
<|S 1234567891
>|NUM=1234567891
如果我输入一个 9 位数字,它会按预期输出
<S 123456789
>|NUM=123456789
>|123456789 is not a prime number
>|because ist a factor of 3
我试过看看是否有人和我有同样的问题,但我在任何地方都找不到。
我用的是 arduino-uno
编辑:在做了更多测试之后,它现在没有设置在测试“S 1111111111”(10 位)后崩溃的次数,它的输出是正常的:
<|S 1111111111
>|NUM=1111111111
>|1111111111 is not a prime number
>|because ist a factor of 11
但是如果我输入 11 位数字,它会解析为 0 ??
<|S 11111111111
>|NUM=11111111111
>|0 cant be a prime number because it doesn't end in 1,3,7,9
bty:我忘了提到'S number_here' S 指定了查找结果的方法我也有 D=DataCrunch 它检查所有数字和 L=List 女巫创建一个找到的素数列表,就像素数搜索一样,thay工作正常,除了 DataCrunch (D) 在解析给定数字时有同样的问题。
EDIT2:这证明 BigNumber 在第一篇文章中可以容纳如此大的数字 https://forum.arduino.cc/index.php?topic=85692.0 。