问题描述
以下代码已编译,但在终端上不生成任何输出。使用的数据存储器为9%,代码为5%。仅当MAX变量的值设置为小于1769时,Arduino才会生成输出。
以下算法用于从上限生成素数。我知道Arduino平台没有这个目的,但是这个项目是记忆研究的一部分。
#define MAX 2000
void setup() {
int i,j;
int limite;
char ehprimo[MAX];
Serial.begin(9600);
for(i=2;i<MAX;i++) ehprimo[i]=1;
limite = (int)sqrt(MAX);
for(i=2;i<=limite;i++) {
if(ehprimo[i]) {
for(j=i*i;j<MAX;j=j+i)
ehprimo[j] = 0;
}
}
for(i=2;i<MAX;i++) {
if(ehprimo[i]) {
Serial.print("\t");
Serial.print(i);
}
}
}
void loop() {
}
解决方法
您的内存不足。
https://www.arduino.cc/en/tutorial/memory
仅您的char数组将消耗2048字节可用SRAM中的2000字节。
当然,您还需要存储其他变量,这会导致您的程序因MAX值较小而失败。