法雷序列节点的定义
struct FareyListNode {
int numerator; // 分子
int denominator; // 分母
FareyListNode *next;
FareyListNode(int numerator, int denominator) {
this->numerator = numerator;
this->denominator = denominator;
this->next = nullptr;
}
};
法雷序列实现的函数
方法:不断往后插入直至不能插入后头指针后移
/*生成法雷序列,从inFile读取n,输出到outFile*/
void fareySubsequence(const char* inFileName, const char* outFileName) {
std::ifstream fin(inFileName);
int n;
if (fin.is_open()) {
fin >> n;
fin.close();
}
std::ofstream fout(outFileName);
if (fout.is_open()) {
FareyListNode * farey = new FareyListNode(0, 1);
// 初始化分子分母[0,1]/[1,1]
farey->next = new FareyListNode(1, 1);
FareyListNode * tempFarey = nullptr;
// 生成法雷序列
long count = -1;
while (farey->next != nullptr) {
while (farey->denominator + farey