





这个代码不会写,有没有人来看看,实在不会写了。各位来帮一下我。
关注引自免费微信小程序:皆我百晓生
#include <iostream>
#include <string>
#include <vector>
class Prime {
private:
int number;
Prime* next;
public:
// 缺省构造函数
Prime(int num, Prime* next = nullptr) : number(num), next(next) {}
// 构造函数,动态分配空间
Prime(const int* numArray, int numArraySize) {
for (int i = 0; i < numArraySize; ++i) {
this->number += numArray[i];
if (i == 0 && this->number >= 1000000007) {
this->next = new Prime(1000000007);
} else {
this->next = new Prime(this->number % 1000000007, this->next);
}
}
}
~Prime() {
delete next;
}
};
class CipherMachine {
private:
Prime* primes;
int size;
vector<long long> decrypts;
public:
CipherMachine(const int* numArray, int numArraySize) {
primes = new Prime[numArraySize];
size = numArraySize;
for (int i = 0; i < numArraySize; ++i) {
primes[i].number = numArray[i];
primes[i].next = nullptr;
}
}
~CipherMachine() {
delete[] primes;
}
int Decrypt(long long bigNumber) const {
for (int i = 0; i < size; ++i) {
while (bigNumber > 0) {
int remainder = bigNumber % primes[i].number;
if (remainder == 0) return primes[i].number;
bigNumber /= primes[i].number;
}
}
return -1;
}
void writeDecryption(string filename) {
ofstream file(filename);
if (!file.is_open()) {
cerr << "Failed to open file" << endl;
exit(1);
}
for (int i = 0; i < size; ++i) {
file << primes[i].number << "*" << primes[i + 1].number << endl;
}
file.close();
}
};
在这个解决方案中,我们创建了一个Prime类来表示链表中的单个质数节点。然后,我们创建了一个CipherMachine类,它包含一个链表来存储所有已知的质数以及它们之间的关系。此外,我们还实现了Decrypt函数来处理链表的遍历过程,并且提供了writeDecryption函数来将结果写入文件。
请注意,这只是一个基本的实现,实际上可能会有一些优化的空间,例如可以考虑如何更快地查找能够分解大整数的质数等。此外,由于这是一个编程问题,所以这里没有涉及到任何复杂的图形或代码块,而是简单地描述了如何编写一个简单的密码机。