私はそれが素数かどうかを調べるために単純なビットコードを作りましたが、大きな素数を与えて速度をテストしましたarduinoのプログラムでは、長さ9〜/桁以下の数字しか取れません。私の読み込み機能をテストして、数字全体を返しますが、「BigNumber」はそれを構文解析しません。BigNumber.h Arduinoどのように10桁以上の数値を解析するか
code:
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
EDITを使用します。いくつかは、より多くのテストを行った後に、それは今、数は 'S 1111111111'(10桁)をテストした後クラッシュのinstedセットdoesntのその出力は正常です:
<|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 iはまた、Dは= DataCrunch、それはすべての数字とLをチェックする必要があり、結果を見つけることの優先mothodをspecifys「Sがnumber_here」ことを言及するのを忘れてしまった=リストの魔女のような見つかった素数のリストを作成し、素数検索、そして、DataCrunch(D)が与えられた数を解析するのと同じ問題を抱えています。
EDIT2: このなBigNumberは最初のポストに、このような多数 https://forum.arduino.cc/index.php?topic=85692.0を保持することができるという証拠があります。
おそらく、素数をどのようにテストするかを私たちに見せてください。そこには種類があるかもしれません。また、十分待っていない可能性もあります。素数は、あなたがさらに進むにつれて、より希薄で希少になります。したがって、次の素数を見つける時間は、指数関数的に前回よりも大きくなります。 –
いいえ問題をテストするための数値としてconst unsigned intを送信してコードをテストしました。10桁未満のすべてのサイズ番号で動作します。BigNumberに10桁の数字を解析しようとするとクラッシュするだけです –
' BigNumber'?ちょうど推測ですが、32ビット整数のオーバーフローが発生していると仮定します(2^32-1 = 4294967295と2^32 = 4294967296を検証します)。 – MuertoExcobito