这里是一个从n到2n的数组中查找主数的程序。它可以正常工作,但必须采取其他措施:在此程序中,筛子叠加在阵列上:元素替换为零。应该是错误的:没有数组。首先,在链接列表中一一列出所有数字。然后从列表中删除那些包含多个链接的链接。最后,打印剩余的内容。 IDK如何在没有数组的情况下执行此操作。
#include <iostream>
using namespace std;
struct node
{
int num;
node* next, * prev;
};
class List // list
{
node* head, * tail;
public:
List() :head(NULL), tail(NULL) {};
void Print();
void Add(int num);
};
void List::Print() //print list
{
node* temp = head;
while (temp != NULL)
{
cout << temp->num << " ";
temp = temp->next;
}
cout << endl;
}
void List::Add(int num) //add to list
{
node* temp = new node;
temp->next = NULL;
temp->num = num;
if (head!=NULL)
{
temp->prev = tail;
tail->next = temp;
tail = temp;
}
else
{
temp->prev = NULL;
head = tail = temp;
}
}
int main()
{
List list;
int n, num;
cout << "Enter N : "; cin >> n;
n = abs(n);
int* simp = new int[2 * n];
// eratosphene's sieve
for (int i = 0; i < 2 * n; i++) {
simp[i] = i;
}
simp[1] = 0;
for (int l = 2; l < 2 * n; l++) {
if (simp[l] != 0) {
for (int j = l * 2; j < 2 * n; j += l) {
simp[j] = 0;
}
}
}
for (int i = n; i < 2 * n; i++) {
if (simp[i]) {
num = simp[i];
list.Add(num);
}
}
cout << "Prime numbers of the list:\n";
list.Print();
return 0;
}