2017-09-28 7 views
0

나는 소수인지 아닌지를 알아보기 위해 숫자를 테스트하는 간단한 코드를 만들었지 만 속도를 테스트하기 위해 큰 소수를 먹이는 동안 arduino에있는 프로그램은 단지 9-/숫자 이하의 숫자를 취할 수 있습니다. 읽기 기능을 테스트하고 전체 숫자를 반환하지만 'BigNumber'는 구문 분석하지 않습니다.BigNumber.h Arduino 10 진수보다 큰 수를 파싱하는 방법

코드 : 난이 10 자리 숫자를 넣으면

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 

코드 아두 이노 정지 출력은 그래서

이다내가 그것을 출력 9 자리 숫자를 넣어 경우 3,691,363,210
<|S 1234567891 
>|NUM=1234567891 

이 나는 ​​사람이 저와 같은 문제를했다하지만 난 어디를 찾을 수 없습니다 경우보고 tryed 한

<S 123456789 
>|NUM=123456789 
>|123456789 is not a prime number 
>|because ist a factor of 3 

을 예상대로.

<|S 1111111111 
>|NUM=1111111111 
>|1111111111 is not a prime number 
>|because ist a factor of 11 
: 좀 더 출력이 정상 지금 테스트 개수의 1111111111 '을 테스트 한 후에 충돌의 insted (10 진수)로 설정 나던 일 후 : 메신저 아두 이노 - UNO

EDIT를 사용

하지만 11 자리로 입력하면 0으로 구문 분석합니까 ??

<|S 11111111111 
>|NUM=11111111111 
>|0 cant be a prime number because it doesn't end in 1,3,7,9 

BTY는 : 나는 S가 나는 또한 D는 = DataCrunch는 모든 숫자와 L을 확인해야 결과를 찾는 첨부 :을 specifys 'S는 number_here'고 언급하는 것을 잊었다 = 목록 마녀 같은 발견 소수의 목록을 만듭니다 소수 검색 및 thay 작업은 DataCrunch (D)가 주어진 숫자를 분석 할 때와 동일한 문제를 가지고 있습니다.

EDIT2 : 이 BigNumber이 첫 번째 게시물 이러한 많은 수의 https://forum.arduino.cc/index.php?topic=85692.0 를 저장할 수 있다는 증거입니다.

+0

아마 소수를 테스트하는 방법을 보여 주어야합니다. 거기에 유형이있는 것일 수 있습니다. 또한, 당신은 충분히 기다리지 않을 가능성이 있습니다. 당신이 더 나아갈수록 소수는 더 희귀하고 희박 해 지므로 다음 소수를 찾는 시간은 이전보다 훨씬 기하 급수적으로 늘어납니다. –

+0

아니요 문제를 테스트하기 위해 숫자로 const unsigned int를 보내서 코드를 테스트했습니다. BigNumber에 10 자리 숫자를 구문 분석하려고 할 때만 10 자리 이하의 모든 크기의 숫자와 함께 작동합니다. –

+0

What is' BigNumber'? 그냥 추측하지만 32 비트 정수 오버플로가 발생한다고 가정합니다 (확인하려면 2^32-1 = 4294967295 및 2^32 = 4294967296). – MuertoExcobito

답변

0

그래서 BigNumber가 매우 큰 숫자에는 적합하지 않지만 'BigNumber.h'lib의 다른 부분은 bc_num을 수행한다는 연구 결과가 나옵니다.

bc_num x; 
bc_str2num(&x, "9898989898", 10); 
String c = "Controll="; 
c+=bc_num2str(x); 
Serial.println(c); 

출력

Controll=9898989898 

그러나 당신이 볼 수 있듯이이 좀 더 프로그래밍을 필요는 implamented 그래서 안녕 꺼 이제 시작하려고 메신저하세요.