我对Atkin筛选的实施要么忽略接近极限的质数,要么忽略接近极限的复合材料.虽然有些限制有效,有些却没有.对于什么是错误,我完全感到困惑.
def AtkinSieve (limit):
results = [2,3,5]
sieve = [False]*limit
factor = int(math.sqrt(lim))
for i in range(1,factor):
for j in range(1, factor):
n = 4*i**2+j**2
if (n <= lim) and (n % 12 == 1 or n % 12 == 5):
sieve[n] = not sieve[n]
n = 3*i**2+j**2
if (n <= lim) and (n % 12 == 7):
sieve[n] = not sieve[n]
if i>j:
n = 3*i**2-j**2
if (n <= lim) and (n % 12 == …Run Code Online (Sandbox Code Playgroud) 在为Arduino编写新库之后,编译器无法识别这个新类并返回错误,
BinaryCounter:15:错误:'二进制'没有命名类型
以下是产生错误的文件.该类定义Binary.h,实现Binary.cpp和使用BinaryCounter.ino
Binary.h
#ifndef Binary_h
#define Binary_h
#include "Arduino.h"
class Binary {
public:
Binary (int pins[], int numPins);
void display(int number);
void clear();
private:
boolean *_values;
int *_pins;
int _numPins;
void _update();
void _setValues (int num);
};
#endif
Run Code Online (Sandbox Code Playgroud)
Binary.cpp
#include "Binary.h"
Binary::Binary(int pins[], int numPins) {
_values = new boolean[numPins];
_pins = pins;
_numPins = numPins;
for (int i = 0; i < _numPins; i ++) {
pinMode(_pins[i], OUTPUT);
_values[i] = false;
}
_update(); …Run Code Online (Sandbox Code Playgroud)