首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigNumber.h Arduino如何解析大于10位的数字

BigNumber.h Arduino如何解析大于10位的数字
EN

Stack Overflow用户
提问于 2017-09-28 15:24:31
回答 1查看 686关注 0票数 0

我做了一些简单的代码来测试一个数字,看看它是否是素数,但是在给它输入大素数以测试程序在arduino上的速度时,它只需要一个长度为9/下位的数字,我测试了我的读函数,它返回整个数字,但是BigNumber不会解析它,它只是表示它的0。

代码:

代码语言:javascript
复制
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,输出如下

代码语言:javascript
复制
<|S 1234567891
>|NUM=1234567891

如果我放一个9位数的数字,它就会像预期的那样输出。

代码语言:javascript
复制
<S 123456789
>|NUM=123456789
>|123456789 is not a prime number 
>|because ist a factor of 3

我试过看是否有人和我有同样的问题,但我在任何地方都找不到。

我用的是arduino-uno

编辑:在做了更多的测试之后,它现在不设置测试'S 1111111111‘(10位数)后崩溃的数字,它的输出是正常的:

代码语言:javascript
复制
<|S 1111111111
>|NUM=1111111111
>|1111111111 is not a prime number 
>|because ist a factor of 11

但如果我加11位数字,它就会解析为0 ??

代码语言:javascript
复制
<|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女巫创建了一个找到素数的列表,就像一个素数搜索一样,并且很好地排除了DataCrunch (D)在解析给定的数字时有同样的问题。

EDIT2:这证明了BigNumber可以在第一篇文章中容纳这么多的https://forum.arduino.cc/index.php?topic=85692.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-28 17:27:07

因此,经过一些扩展研究后发现,BigNumber不适合于非常大的数字,但是“BigNumber.h”库的另一部分执行它的bc_num。

代码语言:javascript
复制
bc_num x;
bc_str2num(&x, "9898989898", 10);
String c = "Controll=";
c+=bc_num2str(x);
Serial.println(c);

输出

代码语言:javascript
复制
Controll=9898989898

但是正如你所看到的,这需要更多的编程来实现,所以我现在就出发,再见。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46472894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档